Linode is one of the oldest and most reliable cloud providers. They offer solid support, generous backups, and excellent infrastructure — perfect for FreeScout deployments that need to be rock-solid.
This guide covers the fastest way to get FreeScout running on Linode.
Why Linode?
| Provider | 2GB RAM / 2 vCPU | Annual Cost | Backups | Support | Best For | |---|---|---|---|---|---| | Linode | $12/mo | $144 | Included | 24/7 | Reliability, support | | Hetzner | €2.99/mo | €36 | Optional | Community | Budget | | DigitalOcean | $6/mo | $72 | Optional | Standard | Ease | | Vultr | $3.50/mo | $42 | Optional | Community | Global reach |
Linode costs more, but includes:
- Automatic backups (free, every 24h)
- 24/7 phone/email support
- Longest track record (operating since 2003)
- VLAN networking for production setups
If you want the most reliable platform and don't mind paying for it, choose Linode.
Step 1: Create a Linode Account
- Go to https://www.linode.com
- Sign up
- Add payment method
- Verify email
Step 2: Create a Linode Compute Instance
- Go to Linodes → Create Linode
- Choose Image: Ubuntu 22.04 LTS
- Region: Pick the closest region to your customers
- Newark (US East)
- Dallas (US Central)
- Fremont (US West)
- London (Europe)
- Singapore (Asia)
- Linode Plan: Select Linode 8GB ($12/month)
- 2GB RAM, 1 vCPU, 50GB SSD
- (More than enough for FreeScout)
- Label:
freescout - Add SSH Key: Create or upload (required)
- Click "Create"
Linode boots in 60 seconds.
Step 3: Set Reverse DNS
This is critical for email deliverability.
- Go to Linodes → Your Linode → Network
- Find your IPv4 address
- Under "Reverse DNS," click the three dots
- Set to your domain:
mail.your-domain.com - Save
Step 4: Add a Long View Monitoring Webhook (Optional)
Linode's Long View service monitors your Linode:
- Go to Linodes → Your Linode → Monitoring
- Copy your "Long View API Token"
- Use this token to set up monitoring alerts
Step 5: Point Your Domain to Linode
- Go to your domain registrar
- Update the A record to your Linode's IP address
- Wait 15–30 minutes for DNS propagation
Step 6: Initial Server Setup
SSH in:
ssh root@your-linode-ip
apt update && apt upgrade -y
apt install -y curl wget git unzip supervisor
Create non-root user:
adduser freescout
usermod -aG sudo freescout
su - freescout
Step 7: 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 8: 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 9: 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 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 10: Configure Environment
sudo cp .env.example .env
sudo nano .env
Update:
APP_URL=https://your-domain.com
APP_KEY= # 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 11: 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 12: 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 13: Install SSL
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com -d www.your-domain.com
Step 14: Firewall Setup (Linode's Cloud Firewall)
Linode's Cloud Firewall protects your instance:
- Go to Firewalls → Create Firewall
- Name it
freescout-firewall - Add Rules:
- Inbound: Allow SSH (22), HTTP (80), HTTPS (443)
- Outbound: Allow all (default)
- Assign to your Linode
- Enable
Step 15: 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 16: Cron Job
sudo crontab -u www-data -e
Add:
* * * * * /usr/bin/php8.2 /var/www/freescout/artisan schedule:run >> /dev/null 2>&1
Linode-Specific Features
Automatic Backups (Included):
- Go to Linodes → Your Linode → Backups
- Automatic backups are ON by default
- Backup schedule: Daily, weekly, biweekly
- Restore point: Click "Restore from Backup" anytime
StackScripts (Automation): Linode's StackScripts let you automate deployment. You can create a StackScript that installs FreeScout automatically. Advanced users only.
NodeBalancer (Load Balancing): If you grow to multiple Linodes, use NodeBalancer for load balancing. Costs $10/month but balances traffic across multiple instances.
Linode vs DigitalOcean vs Hetzner
| | Linode | DigitalOcean | Hetzner | |---|---|---|---| | Cost (2GB/month) | $12 | $6 | €2.99 | | Backups | Free (included) | $1.20/mo | Optional | | Support | 24/7 phone/email | Standard | Community | | Track record | Since 2003 | Since 2011 | Since 2003 | | Best for | Reliability, support | Ease of use | Budget-conscious |
Choose Linode if: You need 24/7 support and automatic backups are important. Choose DigitalOcean if: You want simplicity without paying premium for support. Choose Hetzner if: You're in Europe and budget is your priority.
Troubleshooting
| Issue | Cause | Fix | |---|---|---| | Emails going to spam | Reverse DNS not set | Set PTR record in Linode Cloud Manager → Network | | Instance slow | Out of memory | Check Monitoring → Disk I/O, upgrade Linode size if needed | | Can't SSH in | SSH key not uploaded | Generate new key in Cloud Manager → SSH Keys | | HTTPS fails | DNS not propagated | Wait 24h, then certbot again |
Want FreeScout professionally installed and configured on Linode?
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
- Akamai Cloud Linode Documentation — official guide
- FreeScout GitHub — source code and releases
- Linode Community Guides — server tutorials
- Certbot on Ubuntu — SSL setup