This guide walks you through getting Ava CMS live on the internet. Whether you're hosting your first website ever or you're a seasoned developer, there's an option that fits your needs.
public/ directory, run composer install, and configure. Done!
Before You Start
Ava CMS needs:
- PHP 8.3 or later
- Composer (PHP's package manager)
That's it. No database, no special server software, no complex stack to configure.
What's Composer?
Composer manages PHP dependencies (the libraries Ava uses). Most hosts have it pre-installed. You only need to run composer install once after uploading Ava — it downloads everything into the vendor/ folder.
Storage Requirements
Ava CMS itself is small. What consumes significant disk space:
- Uploaded media in
public/media/ - Cache files in
storage/cache/ - Logs in
storage/logs/
Make sure PHP can write to the storage/ directory. For large sites (10k+ items), the content index cache can grow to 100 MB or more depending on your content size and index backend.
Local Development
PHP includes a built-in server perfect for local development:
php -v # Check PHP is installed (need 8.3+)
cd /path/to/your/ava-site
composer install # Install dependencies (first time only)
php -S localhost:8000 -t public # Start the dev server
Open http://localhost:8000 in your browser. No Apache, Nginx, or LAMP stack required.
Installing PHP and Composer
macOS:
brew install php composer
Linux (Ubuntu/Debian):
sudo apt install php php-mbstring php-xml composer
Windows:
- Download PHP from windows.php.net/download (choose the VS16 x64 Thread Safe ZIP)
- Extract to
C:\phpand add it to your PATH (guide) - Copy
php.ini-developmenttophp.iniand enable required extensions (uncommentextension=mbstring) - Download Composer-Setup.exe and run the installer
Or use a package manager like Scoop: scoop install php composer
Verify installation:
php -v # Should show PHP 8.3+
composer -V # Should show Composer version
Windows: Running Ava CLI Commands
On Windows, you can't run ./ava directly. Use php ava instead:
php ava status # Check site status
php ava rebuild # Rebuild content index
php ava lint # Validate content files
All Ava CLI commands work this way—just prefix with php.
Shared Hosting
Shared hosting is the easiest and most affordable option. The hosting company handles server maintenance while you get a control panel, file manager, and one-click SSL.
What to Look For
- PHP 8.3+ — Check before signing up
- SSH access — Optional but highly recommended for running commands
- Enough RAM — Ava works fine with 128M
memory_limit, but larger sites may need more - SSD/NVMe storage — Faster file reads/writes
- Write permissions — PHP must be able to write to
storage/ - Free SSL — Look for Let's Encrypt support
- Daily backups — Your content is files, so backups matter
Recommended Providers
| Provider | Starting Price | Notes |
|---|---|---|
| Krystal Hosting | From £7/month | UK-based, SSH access, renewable energy |
| Porkbun Easy PHP | From $10/month | Simple setup, includes domain management |
Had a good experience elsewhere? Let us know in GitHub Discussions!
File Structure
Ava CMS has a simple flat structure:
/home/yourusername/
├── app/ ← Themes, plugins, config
├── content/ ← Your Markdown content
├── core/ ← Ava CMS core (don't edit)
├── public/ ← Web root (point your domain here)
│ ├── index.php
│ ├── assets/
│ ├── robots.txt
│ └── media/
├── storage/ ← Cache, logs (PHP needs write access)
├── vendor/ ← Composer dependencies
├── ava ← CLI tool
├── bootstrap.php
└── composer.json
Setup steps:
- Upload Ava CMS to your home directory (e.g.,
/home/yourusername/). - Point your domain's document root to the
public/folder. - Run
composer install --no-devand./ava rebuild.
If your content_index.mode is set to auto (the default) or always, the first request will rebuild automatically. If it’s set to never, you must run ./ava rebuild (or trigger a rebuild from the admin dashboard).
If SSH isn't available, generate the vendor/ folder locally, upload it, then rebuild via the admin dashboard.
public_html/. In that case, copy the contents of public/ into public_html/, then edit index.php to update the AVA_ROOT path to point to where you uploaded the rest of Ava.
Connecting to Your Server
You'll need to connect to your server to upload files and run commands. Both SSH and SFTP use the same credentials—look in your hosting control panel under "SSH Access" or "SFTP".
Your credentials:
- Host: Your domain or server IP
- Username: Your hosting account username
- Password: Your account password (or SSH key)
- Port: 22
SSH (Running Commands)
SSH lets you run commands on your server. It's optional but highly recommended — it makes ./ava rebuild and troubleshooting much easier.
Don't Be Scared of the Terminal!
SSH looks intimidating at first — a black screen with a blinking cursor. But it's just typing commands instead of clicking buttons. You only need a few commands:
cd folder-name— Go into a folderls— See what's in the current folder./ava status— Check if Ava is happy
That's 90% of what you'll do. See the CLI Guide for all available commands.
| Platform | Client |
|---|---|
| macOS/Linux | Built-in Terminal |
| Windows | Windows Terminal, PowerShell, or PuTTY |
ssh [email protected]
Once connected, you can run Ava CMS commands:
./ava status # Check site health
./ava rebuild # Rebuild content index
./ava cache:clear # Clear webpage cache
./ava, the file needs execute permissions. Run chmod +x ava once to make it executable, then try again.
Optional: Using SSH keys instead of passwords
SSH Keys
SSH keys are more secure and convenient than passwords. Generate a key pair once:
ssh-keygen -t ed25519 -C "[email protected]"
ssh-copy-id [email protected]
Now you can connect without entering your password each time.
SFTP (Uploading Files)
SFTP lets you upload files via a graphical interface. Use "SFTP" (not plain "FTP") in your client.
| Platform | Client |
|---|---|
| macOS | Cyberduck (free), Transmit |
| Windows | WinSCP, FileZilla |
| Linux | FileZilla, built-in file managers |
Tip: VS Code's Remote - SSH extension lets you edit files on your server directly—no separate SFTP client needed.
Uploading Ava CMS
- Upload all Ava CMS files to your server
- Run
composer install --no-dev(via SSH, or locally then upload thevendor/folder) - Run
./ava rebuild(or visit your site — auto mode will rebuild on first load)
No SSH? Run composer install --no-dev on your computer, upload the vendor/ folder, then visit your site.
Troubleshooting: "composer: command not found"
# Install Composer locally to your project
curl -sS https://getcomposer.org/installer | php
php composer.phar install --no-dev
VPS Hosting
A VPS (Virtual Private Server) gives you dedicated resources and full control. Consider this when shared hosting can't keep up, you need specific PHP extensions, or you want to host multiple sites.
Recommended VPS Providers
| Provider | Starting Price | Notes |
|---|---|---|
| Hetzner Cloud | From €4/month | Excellent value, EU-based |
| Krystal Cloud VPS | From £10/month | UK-based, renewable energy |
Don't want to manage a server? Use Ploi.io—it connects to your VPS and handles server setup, SSL, and deployments through a friendly dashboard.
Deployment Workflows
Manual (SFTP)
Upload changed files via SFTP, then run ./ava rebuild if you have SSH.
Git-Based
If you keep your site in a Git repository (your own customised Ava CMS installation—not a clone of the main Ava repo), you can deploy by pulling changes:
# On your server (pulling your own site repo)
git pull origin main && ./ava rebuild
Automated (CI/CD)
Use GitHub Actions, Ploi, or Laravel Forge to deploy automatically when you push:
name: Deploy
on: { push: { branches: [main] } }
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: appleboy/ssh-action@master
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USERNAME }}
key: ${{ secrets.SSH_KEY }}
script: git pull && composer install --no-dev && ./ava rebuild
CDN (Optional)
Ava CMS's built-in page cache is already fast. A CDN helps most when you have a global audience or lots of large media files.
Cloudflare (free tier) provides caching, DDoS protection, and free SSL. Just point your domain's nameservers to Cloudflare.
Other options: BunnyCDN (pay-as-you-go), KeyCDN (simple).
Server Configuration (Advanced)
PHP Settings
| Setting | Recommended | Purpose |
|---|---|---|
memory_limit |
128M |
Increase for 10k+ items |
max_execution_time |
30 |
Increase if rebuilds timeout |
upload_max_filesize |
10M |
For admin media uploads |
Nginx
server {
listen 80;
server_name example.com;
root /home/yourusername/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\. { deny all; }
}
Apache
Ava CMS ships with a default .htaccess file in public/. Ensure mod_rewrite is enabled:
sudo a2enmod rewrite && sudo systemctl restart apache2
Need to customize? Edit public/.htaccess or move the rules into your Apache vhost.
Need Help?
- CLI Reference — All available commands
- Configuration — Site settings
- Performance — Optimisation tips
- GitHub Discussions — Ask questions, get help