Skip to Content
🚀 Getting StartedSetup Without Docker

Last Updated: 3/13/2026


Setup without Docker

This guide covers installing LinkAce directly on your server without Docker. This method requires more manual configuration but offers greater control over your environment.

Prerequisites

Before you begin, ensure your server has:

  • PHP 8.2 or higher with required extensions
  • Composer for dependency management
  • Node.js 16+ and npm for asset compilation
  • MySQL 8.0+ or PostgreSQL 13+
  • Web server: Apache or Nginx
  • At least 512 MB RAM

Required PHP Extensions

  • BCMath
  • Ctype
  • Fileinfo
  • JSON
  • Mbstring
  • OpenSSL
  • PDO
  • Tokenizer
  • XML
  • cURL
  • GD or Imagick

Installation Steps

1. Download LinkAce

Clone the repository:

cd /var/www git clone https://github.com/Kovah/LinkAce.git linkace cd linkace git checkout 2.x

Or download the latest release:

wget https://github.com/Kovah/LinkAce/archive/refs/heads/2.x.zip unzip 2.x.zip mv LinkAce-2.x linkace cd linkace

2. Install Dependencies

Install PHP dependencies:

composer install --no-dev --optimize-autoloader

Install Node.js dependencies and build assets:

npm install npm run production

3. Configure Environment

Copy the example environment file:

cp .env.example .env

Edit .env with your settings:

# Application APP_NAME=LinkAce APP_ENV=production APP_KEY= APP_DEBUG=false APP_URL=https://linkace.example.com # Database DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=linkace DB_USERNAME=linkace DB_PASSWORD=YourSecurePassword # Cache & Queue CACHE_DRIVER=file QUEUE_CONNECTION=database SESSION_DRIVER=file

Generate an application key:

php artisan key:generate

4. Set Up Database

Create a database and user:

CREATE DATABASE linkace CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'linkace'@'localhost' IDENTIFIED BY 'YourSecurePassword'; GRANT ALL PRIVILEGES ON linkace.* TO 'linkace'@'localhost'; FLUSH PRIVILEGES;

Run migrations:

php artisan migrate --force

5. Configure Web Server

Nginx Configuration

Create a new site configuration:

server { listen 80; server_name linkace.example.com; root /var/www/linkace/public; add_header X-Frame-Options "SAMEORIGIN"; add_header X-Content-Type-Options "nosniff"; index index.php; charset utf-8; location / { try_files $uri $uri/ /index.php?$query_string; } location = /favicon.ico { access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } error_page 404 /index.php; location ~ \.php$ { fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; include fastcgi_params; } location ~ /\.(?!well-known).* { deny all; } }

Apache Configuration

Create a .htaccess file in the public directory (usually included):

<IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>

Configure your virtual host:

<VirtualHost *:80> ServerName linkace.example.com DocumentRoot /var/www/linkace/public <Directory /var/www/linkace/public> AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/linkace-error.log CustomLog ${APACHE_LOG_DIR}/linkace-access.log combined </VirtualHost>

6. Set Permissions

Ensure proper permissions:

chown -R www-data:www-data /var/www/linkace chmod -R 755 /var/www/linkace chmod -R 775 /var/www/linkace/storage chmod -R 775 /var/www/linkace/bootstrap/cache

7. Set Up Queue Worker

LinkAce uses queues for background tasks. Set up a supervisor configuration:

[program:linkace-worker] process_name=%(program_name)s_%(process_num)02d command=php /var/www/linkace/artisan queue:work --sleep=3 --tries=3 autostart=true autorestart=true user=www-data numprocs=1 redirect_stderr=true stdout_logfile=/var/www/linkace/storage/logs/worker.log

Start the worker:

sudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start linkace-worker:*

8. Set Up Cron Jobs

Add a cron job for scheduled tasks:

* * * * * cd /var/www/linkace && php artisan schedule:run >> /dev/null 2>&1

Updating LinkAce

To update LinkAce:

cd /var/www/linkace git pull origin 2.x composer install --no-dev --optimize-autoloader npm install npm run production php artisan migrate --force php artisan cache:clear php artisan config:clear php artisan view:clear

Troubleshooting

500 Internal Server Error

Check the Laravel logs:

tail -f /var/www/linkace/storage/logs/laravel.log

Permission Denied Errors

Reset permissions:

chown -R www-data:www-data /var/www/linkace chmod -R 775 /var/www/linkace/storage chmod -R 775 /var/www/linkace/bootstrap/cache

Queue Jobs Not Processing

Ensure the queue worker is running:

sudo supervisorctl status linkace-worker:*

Next Steps