Access
- Open
http://<SERVER_IP>. - Click Sign Up.
- Create the first account.
- The first account becomes the server administrator because
NEXT_PUBLIC_ADMIN=1is enabled.
Registration
Registration is enabled by default.
After creating the administrator account, registration can be disabled.
To disable it, edit /root/linkwarden/.env and set:
NEXT_PUBLIC_DISABLE_REGISTRATION=true
Then apply the configuration:
cd /root/linkwarden
docker compose up -d
Important Paths
- Install Path:
/root/linkwarden - Compose File:
/root/linkwarden/docker-compose.yml - Environment File:
/root/linkwarden/.env - App Data:
/root/linkwarden/data - PostgreSQL Data:
/root/linkwarden/pgdata - Meilisearch Data:
/root/linkwarden/meili_data - Nginx Config:
/etc/nginx/sites-available/linkwarden
Docker Management
Check the containers:
cd /root/linkwarden
docker compose ps
View logs:
cd /root/linkwarden
docker compose logs -f
View Linkwarden logs:
cd /root/linkwarden
docker compose logs -f linkwarden
Restart Linkwarden:
cd /root/linkwarden
docker compose restart linkwarden
Stop the stack:
cd /root/linkwarden
docker compose down
Start the stack:
cd /root/linkwarden
docker compose up -d
NGINX Management
Check NGINX:
systemctl status nginx
Test the configuration:
nginx -t
Restart NGINX:
systemctl restart nginx
Reload NGINX:
systemctl reload nginx
Domain & HTTPS
1. Create an A record for your app hostname and point it at your server's public IP address (e.g., app.example.com).
2. Install Certbot:
apt update
apt install -y certbot python3-certbot-nginx
3. Edit NGINX config and replace server_name _; with your domain (e.g., server_name app.example.com;):
vim /etc/nginx/sites-available/linkwarden
4. Test the config:
nginx -t
5. Reload NGINX:
systemctl reload nginx
6. Issue a TLS certificate:
certbot --nginx -d app.example.com
7. Update Linkwarden's environment variables (.env file):
NEXTAUTH_URL=https://app.example.com/api/v1/auth
BASE_URL=https://app.example.com
8. After changing the environment variables, restart Linkwarden:
cd /root/linkwarden
docker compose down
docker compose up -d
9. Open your browser and visit: https://app.example.com
Notes
- Linkwarden is exposed publicly through Nginx on port
80. - The Linkwarden application itself listens only on
127.0.0.1:3000. - PostgreSQL and Meilisearch are internal Docker services and are not directly exposed to the host.
- When configuring the domain, make sure to replace
http://withhttps://wherever the application URL is configured, includingNEXTAUTH_URLandBASE_URL. - Use the same HTTPS domain consistently throughout the NGINX and Linkwarden configuration.
BASE_URLis especially useful when using email features such as password resets or verification emails.- Change the Linkwarden configuration based on your preferences.