Hetzner is the cheapest option for hosting FreeScout in Europe and Asia. Their Cloud Servers cost €2.99–€4.99/month and have better performance than DigitalOcean at half the price.
This guide covers the fastest way to get FreeScout running on Hetzner.
Why Hetzner?
| Provider | 2GB RAM / 2 vCPU | Region | Backups | Support | |---|---|---|---|---| | Hetzner | €2.99/mo | EU, Asia | Optional | Community | | DigitalOcean | $6/mo | Global | Optional | Standard | | Linode | $12/mo | Global | Optional | Standard | | Vultr | $3.50/mo | Global | Optional | Standard |
Hetzner is the cheapest and fastest for EU-based teams. If you're in the US, DigitalOcean or Vultr are better. If you're in Asia, Hetzner Singapore is unbeatable.
Step 1: Create a Hetzner Account
- Go to https://www.hetzner.com/cloud
- Sign up (requires credit card)
- Verify email
Step 2: Create a Cloud Server
- Go to Cloud Console → Servers → Create Server
- Location: Choose the closest datacenter to your users
- Falkenstein (Germany) — best for Europe
- Nuremberg (Germany) — alternative EU location
- Singapore — best for Asia
- Ashburn (US East) — if serving US customers
- Image: Ubuntu 22.04
- Type: Select CX22 (€2.99/month) — 2GB RAM, 2 vCPU, 40GB SSD
- For more traffic, upgrade to CX32 (€4.99/month) — 4GB RAM, 2 vCPU, 80GB SSD
- SSH Key: Create or upload your SSH key (required for secure access)
- Name:
freescout(or your preference) - Click "Create Server"
Server boots in 30 seconds.
Step 3: Configure Reverse DNS (Critical for Email)
This step is unique to Hetzner and critical for email deliverability.
- In Cloud Console, go to Servers → Your Server → Network
- Find your IPv4 address
- Click the three dots → "Edit reverse DNS"
- Set it to your domain:
mail.your-domain.com(not your server's hostname) - Save
Without this, emails will be flagged as spam.
Step 4: Point Your Domain to Hetzner
- Go to your domain registrar
- Update the A record to point to your server's IP address
- (Optional) Add PTR record for reverse DNS confirmation
- Wait 15–30 minutes for DNS propagation
Step 5: Initial Server Setup
SSH into your server:
ssh root@your-server-ip
apt update && apt upgrade -y
apt install -y curl wget git unzip supervisor
Create a non-root user (security best practice):
adduser freescout
usermod -aG sudo freescout
su - freescout
Step 6: Install PHP 8.2 & Dependencies
sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt install -y php8.2 php8.2-fpm php8.2-mysql php8.2-mbstring \
php8.2-xml php8.2-curl php8.2-imap php8.2-zip php8.2-gd \
php8.2-bcmath php8.2-intl nginx mysql-server
Step 7: MySQL Setup
sudo mysql_secure_installation
sudo mysql -u root -p
CREATE DATABASE freescout CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'freescout'@'localhost' IDENTIFIED BY 'strong_password_here';
GRANT ALL PRIVILEGES ON freescout.* TO 'freescout'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Step 8: Download FreeScout
cd /var/www
sudo git clone https://github.com/freescout-helpdesk/freescout.git
sudo chown -R www-data:www-data /var/www/freescout
cd /var/www/freescout
Install Composer dependencies:
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
sudo -u www-data composer install --no-dev --optimize-autoloader
Step 9: Configure Environment
sudo cp .env.example .env
sudo nano .env
Update:
APP_URL=https://your-domain.com
APP_KEY= # Leave blank, auto-generated
DB_DATABASE=freescout
DB_USERNAME=freescout
DB_PASSWORD=strong_password_here
MAIL_DRIVER=smtp
MAIL_HOST=smtp.sendgrid.net
MAIL_PORT=587
MAIL_USERNAME=apikey
MAIL_PASSWORD=your-sendgrid-api-key
Step 10: Generate Keys & Migrate
sudo -u www-data php8.2 artisan key:generate
sudo -u www-data php8.2 artisan migrate --force
sudo -u www-data php8.2 artisan freescout:after-app-update
sudo -u www-data php8.2 artisan storage:link
Step 11: Configure NGINX
Create /etc/nginx/sites-available/freescout:
server {
listen 80;
server_name your-domain.com www.your-domain.com;
root /var/www/freescout/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\.ht {
deny all;
}
}
Enable it:
sudo ln -s /etc/nginx/sites-available/freescout /etc/nginx/sites-enabled/
sudo systemctl enable nginx
sudo systemctl reload nginx
Step 12: Install SSL
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com -d www.your-domain.com
Step 13: Queue Workers
Create /etc/supervisor/conf.d/freescout.conf:
[program:freescout-worker]
process_name=%(program_name)s_%(process_num)02d
command=php8.2 /var/www/freescout/artisan queue:work database --sleep=3 --tries=3 --timeout=60
autostart=true
autorestart=true
user=www-data
numprocs=1
stdout_logfile=/var/www/freescout/storage/logs/worker.log
sudo supervisorctl reread
sudo supervisorctl update
sudo supervisorctl start freescout-worker:*
Step 14: Cron Job
sudo crontab -u www-data -e
Add:
* * * * * /usr/bin/php8.2 /var/www/freescout/artisan schedule:run >> /dev/null 2>&1
Step 15: Email Configuration
See our complete email configuration guide for SMTP, IMAP, SPF, DKIM, and DMARC setup.
Hetzner-Specific Tips
Tip 1: Backups Enable automated backups in Cloud Console → Servers → Your Server → Settings. Costs €0.50 per backup. Weekly backups are cheap insurance.
Tip 2: Monitoring Hetzner provides free monitoring:
- Cloud Console → Monitoring
- Track CPU, RAM, disk, network
- Set up alerts for CPU > 80%
Tip 3: Resize Later If you outgrow CX22, you can upgrade to CX32 or CX42 with one click. No downtime (for stopped servers).
Tip 4: Network Isolation Create a private network to isolate your server from public internet:
- Cloud Console → Networks → Create Network
- Add your server to the network
- Configure firewall to block unnecessary ports
Hetzner vs DigitalOcean vs Vultr
| | Hetzner | DigitalOcean | Vultr | |---|---|---|---| | Cheapest 2GB plan | €2.99 | $6 | $3.50 | | EU datacenters | ✅ | ✅ | ✅ | | Reverse DNS | Easy | Medium | Easy | | Backups | Optional | Optional | Optional | | Best for | EU customers, budget-conscious | US customers, ease of use | Global presence, affordable |
Choose Hetzner if: You're in Europe and want the cheapest option. Choose DigitalOcean if: You want simplicity and don't mind paying more. Choose Vultr if: You need global datacenters at low cost.
Troubleshooting
| Issue | Cause | Fix | |---|---|---| | Emails going to spam | Reverse DNS not set | Set PTR record in Cloud Console → Network | | Server slow | CPU/RAM maxed out | Check Monitoring tab, upgrade to CX32 if needed | | SSH timeout | Firewall blocking port 22 | Check Cloud Console → Firewall rules | | HTTPS not working | DNS not propagated yet | Wait 24 hours, then certbot again |
Want FreeScout installed and optimized on Hetzner in 24 hours?
We handle the full FreeScout installation on your server — SSL, email, security hardening, and a 1-hour onboarding call. Done in 24 hours.
One-time fee · 30-day support · Money-back guarantee
Resources
- Hetzner Cloud Documentation — official Hetzner guide
- FreeScout GitHub — source code and releases
- Hetzner Community Tutorials — server setup guides
- Certbot on Ubuntu — SSL setup