Tutorial7 min readApril 29, 2025

Install FreeScout on Linode — Complete Guide (2025)

Step-by-step guide to install FreeScout on Linode. Covers Linode Compute, reverse DNS, security, and everything you need to get FreeScout running.

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

  1. Go to https://www.linode.com
  2. Sign up
  3. Add payment method
  4. Verify email

Step 2: Create a Linode Compute Instance

  1. Go to Linodes → Create Linode
  2. Choose Image: Ubuntu 22.04 LTS
  3. Region: Pick the closest region to your customers
    • Newark (US East)
    • Dallas (US Central)
    • Fremont (US West)
    • London (Europe)
    • Singapore (Asia)
  4. Linode Plan: Select Linode 8GB ($12/month)
    • 2GB RAM, 1 vCPU, 50GB SSD
    • (More than enough for FreeScout)
  5. Label: freescout
  6. Add SSH Key: Create or upload (required)
  7. Click "Create"

Linode boots in 60 seconds.


Step 3: Set Reverse DNS

This is critical for email deliverability.

  1. Go to Linodes → Your Linode → Network
  2. Find your IPv4 address
  3. Under "Reverse DNS," click the three dots
  4. Set to your domain: mail.your-domain.com
  5. Save

Step 4: Add a Long View Monitoring Webhook (Optional)

Linode's Long View service monitors your Linode:

  1. Go to Linodes → Your Linode → Monitoring
  2. Copy your "Long View API Token"
  3. Use this token to set up monitoring alerts

Step 5: Point Your Domain to Linode

  1. Go to your domain registrar
  2. Update the A record to your Linode's IP address
  3. 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:

  1. Go to Firewalls → Create Firewall
  2. Name it freescout-firewall
  3. Add Rules:
    • Inbound: Allow SSH (22), HTTP (80), HTTPS (443)
    • Outbound: Allow all (default)
  4. Assign to your Linode
  5. 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):

  1. Go to Linodes → Your Linode → Backups
  2. Automatic backups are ON by default
  3. Backup schedule: Daily, weekly, biweekly
  4. 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

Need FreeScout Installed Professionally?

Skip the complexity. We install and configure FreeScout on your server in 24 hours — SSL, email, security, and a full onboarding call included.

Get It Done for $100

One-time fee · 30-day support · Money-back guarantee

Related Articles