59 lines
1.8 KiB
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)"
|