first commit

This commit is contained in:
Blake Ridgway
2026-04-11 14:06:59 -05:00
commit ba1770b493
21 changed files with 2027 additions and 0 deletions

66
Makefile Normal file
View File

@@ -0,0 +1,66 @@
HOST = 172.16.0.214
SSH_USER = root
SSH = ssh $(SSH_USER)@$(HOST)
SCP = scp
JAIL_NAME = cyclingbot
JAIL_ROOT = /jails/$(JAIL_NAME)
BINARY = cycling-bot
.PHONY: all build deploy deploy-env restart stop logs status clean
all: build deploy start
# Cross-compile for FreeBSD amd64
build:
GOOS=freebsd GOARCH=amd64 go build -o $(BINARY) .
# Create required directories inside the jail (safe to run multiple times)
setup:
$(SSH) "mkdir -p $(JAIL_ROOT)/usr/local/bin \
$(JAIL_ROOT)/usr/local/etc/rc.d \
$(JAIL_ROOT)/var/db/$(JAIL_NAME) \
$(JAIL_ROOT)/var/log \
$(JAIL_ROOT)/var/run"
# Copy binary and rc.d script into the jail (via /tmp to avoid jail dir permission issues)
deploy: build setup
$(SCP) $(BINARY) $(SSH_USER)@$(HOST):/tmp/$(BINARY)
$(SCP) rc.d/$(JAIL_NAME) $(SSH_USER)@$(HOST):/tmp/$(JAIL_NAME)-rcd
$(SSH) "jexec $(JAIL_NAME) service $(JAIL_NAME) stop 2>/dev/null; \
rm -f $(JAIL_ROOT)/usr/local/bin/$(BINARY) && \
cp /tmp/$(BINARY) $(JAIL_ROOT)/usr/local/bin/$(BINARY) && \
chmod +x $(JAIL_ROOT)/usr/local/bin/$(BINARY) && \
rm /tmp/$(BINARY) && \
rm -f $(JAIL_ROOT)/usr/local/etc/rc.d/$(JAIL_NAME) && \
cp /tmp/$(JAIL_NAME)-rcd $(JAIL_ROOT)/usr/local/etc/rc.d/$(JAIL_NAME) && \
chmod +x $(JAIL_ROOT)/usr/local/etc/rc.d/$(JAIL_NAME) && \
rm /tmp/$(JAIL_NAME)-rcd"
# Copy .env separately (run once — avoid overwriting production config)
deploy-env:
$(SCP) .env \
$(SSH_USER)@$(HOST):$(JAIL_ROOT)/var/db/$(JAIL_NAME)/.env
$(SSH) "chmod 600 $(JAIL_ROOT)/var/db/$(JAIL_NAME)/.env && \
chown 1001:1001 $(JAIL_ROOT)/var/db/$(JAIL_NAME)/.env"
start:
$(SSH) "rm -f $(JAIL_ROOT)/var/run/$(JAIL_NAME).pid && \
jexec $(JAIL_NAME) service $(JAIL_NAME) start"
restart:
$(SSH) "jexec $(JAIL_NAME) service $(JAIL_NAME) stop 2>/dev/null; \
rm -f $(JAIL_ROOT)/var/run/$(JAIL_NAME).pid && \
jexec $(JAIL_NAME) service $(JAIL_NAME) start"
stop:
$(SSH) "jexec $(JAIL_NAME) service $(JAIL_NAME) stop"
logs:
$(SSH) "jexec $(JAIL_NAME) tail -f /var/log/$(JAIL_NAME).log"
status:
$(SSH) "jls && jexec $(JAIL_NAME) service $(JAIL_NAME) status"
clean:
rm -f $(BINARY)