writeonce/infra/setup.sh
2026-04-05 00:45:02 +02:00

36 lines
1.2 KiB
Bash
Executable file

#!/bin/bash
# setup.sh — run once on the server to create user, directory, service, nginx, and SSL
set -e
echo "Creating writeonce user..."
sudo useradd -r -s /bin/false writeonce 2>/dev/null || echo "User already exists"
echo "Creating directory structure..."
sudo mkdir -p /opt/writeonce/{content,data,templates,static}
sudo chown -R writeonce:writeonce /opt/writeonce
echo "Installing systemd service..."
sudo cp writeonce.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable writeonce
echo "Configuring nginx..."
sudo cp writeonce.de.nginx /etc/nginx/sites-available/writeonce.de
sudo ln -sf /etc/nginx/sites-available/writeonce.de /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
echo "Setting up SSL with Let's Encrypt..."
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d writeonce.de -d www.writeonce.de
echo "Installing certbot reload hook..."
sudo mkdir -p /etc/letsencrypt/renewal-hooks/deploy
sudo tee /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh > /dev/null << 'HOOK'
#!/bin/bash
systemctl reload nginx
HOOK
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh
echo "Setup complete."
echo "Run deploy.sh from your development machine to deploy the binary."