Sites
Add a Site
Go to Sites → Add site, choose a type, enter the domain and click Create site. XAXA then:
- Creates a Linux user (the site user) with home
/home/<user>. - Creates
/home/<user>/htdocs/<domain>for your files. - Writes the runtime: a PHP-FPM pool or a systemd service.
- Writes an nginx vhost with a temporary self-signed certificate, checks it with
nginx -tand reloads nginx.
The site user is suggested from the domain and kept short: www and the extension are dropped, the rest is joined with - (at most 16 characters), e.g. test.example.com.tr → test-example. If the name is taken, -2, -3 … is added. You can type your own.
The form fills in a strong site user password; change it or click Generate new password. It must be 6–64 characters (letters, digits and ._~!@#%^*+=-). The password is shown once after creation and is not stored in the panel.
Site types
PHP
Choose a PHP version (8.2–8.5). Requests are served by a dedicated PHP-FPM pool running as the site user, isolated to its own Linux account and 750 home directory.
The Application list fills in the document root for you (you can still change it):
| Application | Document root |
|---|---|
| Generic, WordPress, Joomla, PrestaShop, Nextcloud | the site folder |
| Laravel, Symfony, CodeIgniter 4, Shopware 6, TYPO3 (Composer), Slim 4 | public |
| Drupal (Composer), Craft CMS, Yii 2 | web |
| CakePHP 5 | webroot |
| Magento 2 | pub |
Install an application
For WordPress and Laravel tick Install … now (unchecked by default: the site is created empty). XAXA then creates a database and installs the app in the background as the site user:
- WordPress — downloaded and configured with WP-CLI. The admin URL, user and generated password are shown once on the site's Overview.
- Laravel — a fresh
composer create-project, document root set topublic,.envpointed at the new database, migrations run.
Node.js
Choose an application template to suggest a command, or enter a start command such as npm start or node server.js, choose the Node.js version (20, 22, 24 or 26 — whichever are installed under Instance → Runtimes) and the number of instances (1–8).
The App port is assigned automatically from the first complete free range (from 3000); you can choose another one between 1024 and 65535. It is rejected if another site's instances use it or a service on the server already listens on it. Instance n uses port + n. XAXA exports $PORT and HOST=127.0.0.1, and runs one systemd service per instance (xaxa-<user>@<port>). nginx balances requests between the instances, including WebSockets. Services restart automatically if they crash.
The app is not started until there is code: deploy it, then click Start on the Overview (a deployment restarts it if it is already running). The chosen Node.js version is also used in SSH, the web terminal, cron and deploy scripts for that site.
Use Advanced → Application directory for a project inside a monorepo, and the HTTP health check path (empty for workers and apps without HTTP). Creating a site does not install application files. npm, Yarn, pnpm and Bun are available by default; the default Git deploy detects the project package manager. See Node.js apps for environment files, build commands and startup checks.
Python
Same as Node.js, with a Python version (3.10–3.14). python3 in the site's shell, cron and deploys is that version. Use the full path to your virtual environment, for example:
.venv/bin/uvicorn main:app --host 127.0.0.1 --port $PORT
.venv/bin/gunicorn app:app --bind 127.0.0.1:$PORT
Static
Plain HTML, CSS and JavaScript — ideal for Vite, Astro or Hugo builds. Set the document root to your build folder (for example dist).
Reverse proxy
Forward the domain to any HTTP(S) upstream, for example a Docker container on http://127.0.0.1:8080. The upstream receives its own name in Host (and the visitor's host in X-Forwarded-Host); an HTTPS upstream is reached with SNI and its certificate is verified against the system CA store. Turn off Verify upstream certificate under Settings → General only for an internal upstream with a self-signed certificate.
Next steps
- Point DNS to the server and issue a certificate. With a Cloudflare token (Instance → Cloudflare), Add site offers to create the A record of a new domain that has none yet, DNS only or proxied. Deleting the site removes that record again (only one the panel made that still points to this server).
- Upload files via SFTP.
- Create a database.
Found a mistake or need help? support@xaxa.com.tr