PersonaOne CMS 1.2.3#
Complete installation, user and security manual#
PersonaOne is a commercial PHP template for a personal profile, portfolio and small-business website. It includes local administration, three public languages, a blog, image and MP4 gallery, custom pages, visual themes, licensing and safe full-ZIP updates.
1. Customer package contents#
- public website in Czech, English and German,
- multilingual installer,
- local Administrator and Editor accounts with no public registration,
- profile, bio, services, skills, experience and testimonials,
- custom pages, blog and gallery,
- JPG, PNG and WEBP up to 8 MB; MP4 up to 64 MB,
- eight themes and a custom accent colour,
- contact form, local messages and audit trail,
- starter Privacy, Cookies and Terms pages,
- optional editorial, tabloid, satire or entertainment notice,
- Standard and Pro license tiers,
- signed update ZIPs with backup and automatic rollback.
2. Server requirements#
PHP 8.1+, JSON, Fileinfo, Sodium, Sessions and ZipArchive, HTTPS, allow_url_fopen = On, Apache mod_rewrite or the supplied Nginx configuration. storage/, storage/uploads/ and config/ during installation must be writable.
PHP limits must exceed the uploaded file. For MP4 up to 64 MB, use for example upload_max_filesize = 70M and post_max_size = 75M, then restart the relevant PHP-FPM service.
3. Installation under /www#
Extract the contents of the ZIP directly into a directory such as /www/customer-site, not another nested folder.
mkdir -p /www/customer-site
unzip personaone-template-v1.2.3.zip -d /www/customer-site
chown -R www-data:www-data /www/customer-site
find /www/customer-site -type d -exec chmod 755 {} \;
find /www/customer-site -type f -exec chmod 644 {} \;
chmod 775 /www/customer-site/storage /www/customer-site/storage/uploads /www/customer-site/config
Point the domain to that directory and open https://your-domain.example/install. The installer can be switched between CZ / EN / DE. Enter the administrator account, license and vendor endpoints. Store the recovery code outside the server. Administration is at /admin/login; documentation is at /docs/.
4. Languages in administration#
Three direct CZ / EN / DE buttons are available in the top-right corner throughout the administration. Every click is submitted directly to the server without relying on JavaScript and is saved to both the current session and the user account. An Administrator can therefore work in English while an Editor uses Czech or German.
The Languages / website panel controls something different: the public language versions. Enable any combination of CZ, EN and DE and choose the default language. At least one must remain enabled. Disabling a language does not delete translations; it only hides that public version and switcher entry.
Multilingual content fields remain available for CZ, EN and DE. When a translation is empty, the site attempts to use Czech or the first available value.
5. Profile, sections and custom pages#
Use Profile for the name, title, tagline, bio, contact details, location, portrait and social links. Use Sections for services, skills, timeline and testimonials.
Pages can create additional pages with their own slug, translations and menu visibility. Content uses safe Markdown for headings, emphasis, lists and links. Arbitrary HTML is not executed.
6. Blog#
In Blog, enter a slug, publication date, multilingual titles, excerpts and content. An optional JPG, PNG or WEBP cover image can be uploaded. A post can be a draft or published.
Published posts appear at /blog, with the latest three on the homepage. Slugs must be unique. Replaced or removed cover files are deleted safely.
7. Image and MP4 gallery#
Upload JPG, PNG, WEBP or MP4 in Gallery, with a caption for each language. Images are limited to 8 MB and MP4 to 64 MB. The application checks the actual MIME type, validates image structure and checks the MP4 ftyp container marker. Files receive random names.
An empty gallery is hidden from the public menu. The link and section appear automatically after the first media item. MP4 is played locally through the HTML5 player. For long or high-bitrate video, external video hosting is usually more efficient.
8. Appearance and Standard / Pro#
Appearance provides eight themes, a custom accent, font scale and corner style.
- Standard: usually one domain, mandatory “Created by FussyCraft / Lajkto” credit, 6 months support and 12 months updates according to purchase terms.
- Pro: white-label entitlement, removable credit, commonly production plus staging domain, and 24 months support and updates according to purchase terms.
The individual signed license key determines the tier. Both tiers use the same installation ZIP. One purchase or project should use its own key.
9. Users and security#
Administrator has full access. Editor can manage content, pages, blog, gallery and messages, but not licenses, users, legal settings or updates. Passwords use Argon2id, login attempts are rate-limited, forms use CSRF protection and uploads use a type whitelist.
There is no public registration. Use HTTPS, unique strong passwords, current updates, correct file permissions and off-site backups.
10. Full-ZIP updates#
After version 1.2.3 is installed, open Updates. Upload the complete original personaone-template-vX.Y.Z.zip customer package and confirm.
The updater verifies the ZIP, product, higher version and vendor cryptographic signature; blocks path traversal, symbolic links and suspicious archives; backs up changed files; never overwrites storage/ or config/; replaces system files atomically; and rolls back automatically on failure. Backups are stored in storage/backups/.
The first upgrade from an older release without the update panel must be applied manually over the web files while preserving storage/ and config/. Later upgrades can be installed from administration.
11. Legal settings, cookies and responsibility#
The supplied legal copy is only an editable starting point, not legal advice. The operator must add real identity details, processing purposes and legal bases, retention periods, hosting, email, analytics, recipients, international transfers, copyright permissions and any consumer-law information. Have the final copy reviewed for the operator’s country and target audience.
The core uses technically necessary session functionality for administration, CSRF protection and language selection. Analytics and marketing tools are not injected automatically. When adding them, implement appropriate notice, consent management and prior blocking where required. Calling content tabloid, satire or entertainment does not remove responsibility for unlawful content, personality rights, defamation, copyright or privacy.
Official references:
- GDPR: https://eur-lex.europa.eu/eli/reg/2016/679/oj
- Czech DPA cookie guidance: https://uoou.gov.cz/cookies
12. Backups#
Back up at least storage/data.json, storage/uploads/, storage/license.json, storage/installation.id and config/installed.php. Keep backups outside /www and test restoration.
13. Support scope#
Support covers reproducible product defects, installation guidance according to this manual, feature explanations, and compatibility or security fixes during the entitlement period. It does not include free content creation, translations, legal review, VPS/DNS/email management, custom development, third-party integrations, migrations, malware cleanup or unlimited training.
14. Troubleshooting#
- Gallery appears to do nothing: an empty public gallery is hidden. Add media in Administration → Gallery.
- Languages are missing: open Administration → Languages / website and hard-refresh after an upgrade.
- MP4 upload fails: check PHP upload limits, Fileinfo,
storage/uploads/permissions and that the file is a real MP4 container. - ZIP update fails: use an original newer customer template ZIP, not the Vendor Bundle; check ZipArchive and upload limits.
- Documentation returns 403:
.htaccessmust containDirectoryIndex index.php index.html. - Routes fail: enable Apache rewrite and
AllowOverride All, or use the supplied Nginx block. - License and www mismatch: the product normalises
www.domain.exampletodomain.example; redirect both hostnames to one canonical variant.
Contact form
The form accepts any non-empty message. Errors appear directly in the form and entered values are preserved. Successful messages appear in Administration → Messages when local storage is enabled.