clavitor/clavitor.com/Makefile

59 lines
1.8 KiB
Makefile

BINARY = clavitor-web
PROD_HOST = root@zurich.inou.com
PROD_DIR = /opt/clavitor-web
PROD_PORT = 8099
.PHONY: build dev deploy-dev deploy-prod setup-prod
# Build for local (dev)
build:
CGO_ENABLED=1 go build -o $(BINARY) .
# Run locally (dev mode — templates reload from disk)
dev: build
pkill -f $(BINARY) 2>/dev/null || true
sleep 0.5
./$(BINARY) &
@echo "→ http://localhost:$(PROD_PORT)"
# Deploy to dev (localhost — just rebuild and restart)
deploy-dev: build
pkill -f $(BINARY) 2>/dev/null || true
sleep 0.5
./$(BINARY) &
@echo "✓ dev deployed → http://localhost:$(PROD_PORT)"
# Build for prod (linux/amd64 for Zürich)
build-prod:
GOOS=linux GOARCH=amd64 CGO_ENABLED=1 go build -o $(BINARY)-linux-amd64 .
# Deploy to prod (Zürich)
deploy-prod: build-prod
scp $(BINARY)-linux-amd64 clavitor.db $(PROD_HOST):$(PROD_DIR)/
ssh $(PROD_HOST) "cd $(PROD_DIR) && mv $(BINARY)-linux-amd64 $(BINARY) && systemctl restart clavitor-web"
@echo "✓ prod deployed → https://clavitor.ai"
# First-time prod setup: create dir, systemd service, update Caddy
setup-prod:
ssh $(PROD_HOST) "mkdir -p $(PROD_DIR)"
scp $(BINARY)-linux-amd64 clavitor.db $(PROD_HOST):$(PROD_DIR)/
ssh $(PROD_HOST) "mv $(PROD_DIR)/$(BINARY)-linux-amd64 $(PROD_DIR)/$(BINARY)"
ssh $(PROD_HOST) 'cat > /etc/systemd/system/clavitor-web.service << EOF\n\
[Unit]\n\
Description=clavitor-web\n\
After=network.target\n\
\n\
[Service]\n\
Type=simple\n\
WorkingDirectory=$(PROD_DIR)\n\
ExecStart=$(PROD_DIR)/$(BINARY)\n\
Restart=always\n\
RestartSec=5\n\
Environment=PORT=$(PROD_PORT)\n\
\n\
[Install]\n\
WantedBy=multi-user.target\n\
EOF'
ssh $(PROD_HOST) "systemctl daemon-reload && systemctl enable --now clavitor-web"
@echo "✓ prod setup complete — now update Caddyfile to reverse_proxy localhost:$(PROD_PORT)"