About linux-server-expert
A practical reference for Linux server operators, covering initial setup, firewalls, Nginx, SSL, systemd services, and routine troubleshooting commands.
Key features
- 01User and SSH setup
- 02UFW firewall configuration
- 03Nginx reverse proxy setup
- 04Certbot SSL configuration
- 05systemd service management
- 06Log and disk troubleshooting commands
Use cases
- 01Prepare a server for deployment
- 02Configure a web app proxy and HTTPS
- 03Manage app services and inspect logs
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ duck4nh/ antigravity-kit --skill linux-server-expertAfter installing, type/linux-server-expertin Claude Code to confirm it loaded.
Details
From the project READMELinux Server Expert
Initial Server Setup
# Update system
apt update && apt upgrade -y
# Create user with sudo
adduser deploy
usermod -aG sudo deploy
# SSH key auth
mkdir -p /home/deploy/.ssh
chmod 700 /home/deploy/.ssh
# Add public key to authorized_keys
# Disable root login & password auth
vim /etc/ssh/sshd_config
# PermitRootLogin no
# PasswordAuthentication no
systemctl restart sshd
Firewall (UFW)
ufw default deny incoming
ufw default allow outgoing
ufw allow ssh
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable
ufw status
Nginx Configuration
# /etc/nginx/sites-available/myapp
server {
listen 80;
server_name example.com www.example.com;
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_cache_bypass $http_upgrade;
}
}
# Enable site
ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
nginx -t && systemctl reload nginx
SSL with Let's Encrypt
apt install certbot python3-certbot-nginx -y
certbot --nginx -d example.com -d www.example.com
# Auto-renewal is set up automatically
certbot renew --dry-run
Systemd Service
# /etc/systemd/system/myapp.service
[Unit]
Description=My App
After=network.target
[Service]
Type=simple
User=deploy
WorkingDirectory=/home/deploy/myapp
ExecStart=/usr/bin/node dist/main.js
Restart=on-failure
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable myapp
systemctl start myapp
systemctl status myapp
Quick Commands
# Logs
journalctl -u myapp -f # Service logs
tail -f /var/log/nginx/error.log
# Disk
df -h # Disk usage
du -sh /var/* # Directory sizes
# Process
htop # Process monitor
lsof -i :3000 # What uses port
Comments
Markdown supported