refactor: extract shared player, session, and chat packages #5
@@ -1,45 +0,0 @@
|
|||||||
Create a new Gitea release for this project using semantic versioning.
|
|
||||||
|
|
||||||
## Current state
|
|
||||||
|
|
||||||
Fetch tags and find the latest version:
|
|
||||||
|
|
||||||
```
|
|
||||||
!git fetch --tags && git tag --sort=-v:refname | head -5
|
|
||||||
```
|
|
||||||
|
|
||||||
Commits since the last release (if no tags exist, this shows all commits):
|
|
||||||
|
|
||||||
```
|
|
||||||
!git log $(git describe --tags --abbrev=0 2>/dev/null && echo "$(git describe --tags --abbrev=0)..HEAD" || echo "") --oneline
|
|
||||||
```
|
|
||||||
|
|
||||||
## Instructions
|
|
||||||
|
|
||||||
1. **Determine current version** from the tag output above. If no `vX.Y.Z` tags exist, treat current version as `v0.0.0`.
|
|
||||||
|
|
||||||
2. **Analyze commits** using conventional commit prefixes to pick the semver bump:
|
|
||||||
- Breaking changes (`!` after type, or `BREAKING CHANGE` in body) → **major** bump
|
|
||||||
- `feat:` → **minor** bump
|
|
||||||
- `fix:`, `chore:`, `deps:`, `revert:`, and everything else → **patch** bump
|
|
||||||
- Use the **highest** applicable bump level across all commits
|
|
||||||
|
|
||||||
3. **Generate release notes** — group commits into sections:
|
|
||||||
- **Features** — `feat:` commits
|
|
||||||
- **Fixes** — `fix:` commits
|
|
||||||
- **Other** — everything else (`chore:`, `deps:`, `revert:`, etc.)
|
|
||||||
- Omit empty sections. Each commit is a bullet point with its short description (strip the prefix).
|
|
||||||
|
|
||||||
4. **Present for approval** — show the user:
|
|
||||||
- Current version → proposed new version
|
|
||||||
- The full release notes
|
|
||||||
- The exact `tea` command that will run
|
|
||||||
- Ask the user to confirm before proceeding
|
|
||||||
|
|
||||||
5. **Create the release** — on user approval, run:
|
|
||||||
```
|
|
||||||
tea releases create --login gitea --repo ryan/c4 --tag <version> --target main -t "<version>" -n "<release notes>"
|
|
||||||
```
|
|
||||||
Do NOT create a local git tag — Gitea creates it server-side.
|
|
||||||
|
|
||||||
6. **Verify** — run `tea releases ls --login gitea --repo ryan/c4` to confirm the release was created.
|
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
c4
|
games
|
||||||
c4.db
|
games.db
|
||||||
data/
|
data/
|
||||||
deploy/
|
deploy/
|
||||||
.env
|
.env
|
||||||
.git
|
.git
|
||||||
.gitignore
|
.gitignore
|
||||||
assets/css/output.css
|
assets/css/output.css
|
||||||
c4-deploy-*.tar.gz
|
games-deploy-*.tar.gz
|
||||||
c4-deploy-*_b64*.txt
|
games-deploy-*_b64*.txt
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
# Log level (TRACE, DEBUG, INFO, WARN, ERROR). Defaults to INFO.
|
# Log level (TRACE, DEBUG, INFO, WARN, ERROR). Defaults to INFO.
|
||||||
# LOG_LEVEL=DEBUG
|
# LOG_LEVEL=DEBUG
|
||||||
|
|
||||||
# SQLite database path. Defaults to data/c4.db.
|
# SQLite database path. Defaults to data/games.db.
|
||||||
# DB_PATH=data/c4.db
|
# DB_PATH=data/games.db
|
||||||
|
|
||||||
# Application URL for invite links. Defaults to https://games.adriatica.io.
|
# Application URL for invite links. Defaults to https://games.adriatica.io.
|
||||||
# APP_URL=http://localhost:7331
|
# APP_URL=http://localhost:7331
|
||||||
@@ -12,5 +12,5 @@
|
|||||||
|
|
||||||
# Goose CLI migration config (only needed for running goose manually)
|
# Goose CLI migration config (only needed for running goose manually)
|
||||||
GOOSE_DRIVER=sqlite3
|
GOOSE_DRIVER=sqlite3
|
||||||
GOOSE_DBSTRING=data/c4.db?_pragma=foreign_keys(1)&_pragma=journal_mode(WAL)
|
GOOSE_DBSTRING=data/games.db?_pragma=foreign_keys(1)&_pragma=journal_mode(WAL)
|
||||||
GOOSE_MIGRATION_DIR=db/migrations
|
GOOSE_MIGRATION_DIR=db/migrations
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
|
|
||||||
env:
|
env:
|
||||||
DEPLOY_DIR: /home/ryan/c4
|
DEPLOY_DIR: /home/ryan/games
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
test:
|
test:
|
||||||
|
|||||||
@@ -9,10 +9,10 @@ RUN go mod download
|
|||||||
COPY . .
|
COPY . .
|
||||||
RUN go tool gotailwind -i assets/css/input.css -o assets/css/output.css --minify
|
RUN go tool gotailwind -i assets/css/input.css -o assets/css/output.css --minify
|
||||||
RUN --mount=type=cache,target=/root/.cache/go-build \
|
RUN --mount=type=cache,target=/root/.cache/go-build \
|
||||||
CGO_ENABLED=0 go build -ldflags="-s" -o /bin/c4 .
|
CGO_ENABLED=0 go build -ldflags="-s" -o /bin/games .
|
||||||
RUN upx -9 -k /bin/c4
|
RUN upx -9 -k /bin/games
|
||||||
|
|
||||||
FROM scratch
|
FROM scratch
|
||||||
ENV PORT=8080
|
ENV PORT=8080
|
||||||
COPY --from=build /bin/c4 /
|
COPY --from=build /bin/games /
|
||||||
ENTRYPOINT ["/c4"]
|
ENTRYPOINT ["/games"]
|
||||||
|
|||||||
10
Taskfile.yml
10
Taskfile.yml
@@ -27,9 +27,9 @@ tasks:
|
|||||||
- "assets/css/output.css"
|
- "assets/css/output.css"
|
||||||
|
|
||||||
build:
|
build:
|
||||||
desc: Production build to bin/c4
|
desc: Production build to bin/games
|
||||||
cmds:
|
cmds:
|
||||||
- go build -o bin/c4 .
|
- go build -o bin/games .
|
||||||
deps:
|
deps:
|
||||||
- build:templ
|
- build:templ
|
||||||
- build:styles
|
- build:styles
|
||||||
@@ -49,8 +49,8 @@ tasks:
|
|||||||
cmds:
|
cmds:
|
||||||
- |
|
- |
|
||||||
go tool air \
|
go tool air \
|
||||||
-build.cmd "go build -tags=dev -o tmp/bin/c4 ." \
|
-build.cmd "go build -tags=dev -o tmp/bin/games ." \
|
||||||
-build.bin "tmp/bin/c4" \
|
-build.bin "tmp/bin/games" \
|
||||||
-build.exclude_dir "data,bin,tmp,deploy" \
|
-build.exclude_dir "data,bin,tmp,deploy" \
|
||||||
-build.include_ext "go,templ" \
|
-build.include_ext "go,templ" \
|
||||||
-misc.clean_on_exit "true"
|
-misc.clean_on_exit "true"
|
||||||
@@ -75,7 +75,7 @@ tasks:
|
|||||||
run:
|
run:
|
||||||
desc: Build and run the server
|
desc: Build and run the server
|
||||||
cmds:
|
cmds:
|
||||||
- ./bin/c4
|
- ./bin/games
|
||||||
deps:
|
deps:
|
||||||
- build
|
- build
|
||||||
|
|
||||||
|
|||||||
@@ -71,6 +71,6 @@ func loadBase() *Config {
|
|||||||
}
|
}
|
||||||
}(),
|
}(),
|
||||||
AppURL: getEnv("APP_URL", "https://games.adriatica.io"),
|
AppURL: getEnv("APP_URL", "https://games.adriatica.io"),
|
||||||
DBPath: getEnv("DB_PATH", "data/c4.db"),
|
DBPath: getEnv("DB_PATH", "data/games.db"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Deploy the c4 binary to /opt/c4, then restart the service.
|
# Deploy the games binary to /opt/games, then restart the service.
|
||||||
# Works from the repo (builds first) or from an extracted tarball (pre-built binary).
|
# Works from the repo (builds first) or from an extracted tarball (pre-built binary).
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
ROOT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
||||||
INSTALL_DIR="/opt/c4"
|
INSTALL_DIR="/opt/games"
|
||||||
BINARY="$ROOT_DIR/c4"
|
BINARY="$ROOT_DIR/games"
|
||||||
|
|
||||||
# If Go is available and we have source, build fresh
|
# If Go is available and we have source, build fresh
|
||||||
if [[ -f "$ROOT_DIR/go.mod" ]] && command -v go &>/dev/null; then
|
if [[ -f "$ROOT_DIR/go.mod" ]] && command -v go &>/dev/null; then
|
||||||
@@ -13,7 +13,7 @@ if [[ -f "$ROOT_DIR/go.mod" ]] && command -v go &>/dev/null; then
|
|||||||
(cd "$ROOT_DIR" && go tool gotailwind -i assets/css/input.css -o assets/css/output.css --minify)
|
(cd "$ROOT_DIR" && go tool gotailwind -i assets/css/input.css -o assets/css/output.css --minify)
|
||||||
|
|
||||||
echo "Building binary..."
|
echo "Building binary..."
|
||||||
(cd "$ROOT_DIR" && CGO_ENABLED=0 go build -o c4 .)
|
(cd "$ROOT_DIR" && CGO_ENABLED=0 go build -o games .)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ! -f "$BINARY" ]]; then
|
if [[ ! -f "$BINARY" ]]; then
|
||||||
@@ -22,10 +22,10 @@ if [[ ! -f "$BINARY" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Installing to $INSTALL_DIR..."
|
echo "Installing to $INSTALL_DIR..."
|
||||||
install -o games -g games -m 755 "$BINARY" "$INSTALL_DIR/c4"
|
install -o games -g games -m 755 "$BINARY" "$INSTALL_DIR/games"
|
||||||
|
|
||||||
echo "Restarting service..."
|
echo "Restarting service..."
|
||||||
systemctl restart c4.service
|
systemctl restart games.service
|
||||||
|
|
||||||
echo "Done. Status:"
|
echo "Done. Status:"
|
||||||
systemctl status c4.service --no-pager
|
systemctl status games.service --no-pager
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=C4 Game Lobby
|
Description=Games Lobby
|
||||||
After=network.target
|
After=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
User=games
|
User=games
|
||||||
Group=games
|
Group=games
|
||||||
WorkingDirectory=/opt/c4
|
WorkingDirectory=/opt/games
|
||||||
ExecStart=/opt/c4/c4
|
ExecStart=/opt/games/games
|
||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=5
|
RestartSec=5
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@ Environment=PORT=8080
|
|||||||
NoNewPrivileges=true
|
NoNewPrivileges=true
|
||||||
ProtectSystem=strict
|
ProtectSystem=strict
|
||||||
ProtectHome=true
|
ProtectHome=true
|
||||||
ReadWritePaths=/opt/c4
|
ReadWritePaths=/opt/games
|
||||||
PrivateTmp=true
|
PrivateTmp=true
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Build the c4 binary, bundle it with deploy files into a tarball,
|
# Build the games binary, bundle it with deploy files into a tarball,
|
||||||
# base64-encode it, and split into 25MB chunks for transfer.
|
# base64-encode it, and split into 25MB chunks for transfer.
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
@@ -7,14 +7,14 @@ REPO_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|||||||
cd "$REPO_DIR"
|
cd "$REPO_DIR"
|
||||||
|
|
||||||
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
|
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
|
||||||
TARBALL="c4-deploy-${TIMESTAMP}.tar.gz"
|
TARBALL="games-deploy-${TIMESTAMP}.tar.gz"
|
||||||
BASE64_FILE="c4-deploy-${TIMESTAMP}_b64.txt"
|
BASE64_FILE="games-deploy-${TIMESTAMP}_b64.txt"
|
||||||
|
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
# Clean previous artifacts
|
# Clean previous artifacts
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
echo "--- Cleaning old artifacts ---"
|
echo "--- Cleaning old artifacts ---"
|
||||||
rm -f ./c4 c4-deploy-*.tar.gz c4-deploy-*_b64*.txt
|
rm -f ./games games-deploy-*.tar.gz games-deploy-*_b64*.txt
|
||||||
|
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
# Build
|
# Build
|
||||||
@@ -23,18 +23,18 @@ echo "--- Building CSS ---"
|
|||||||
go tool gotailwind -i assets/css/input.css -o assets/css/output.css --minify
|
go tool gotailwind -i assets/css/input.css -o assets/css/output.css --minify
|
||||||
|
|
||||||
echo "--- Building binary (linux/amd64) ---"
|
echo "--- Building binary (linux/amd64) ---"
|
||||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o c4 .
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o games .
|
||||||
|
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
# Verify required files
|
# Verify required files
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
echo "--- Verifying files ---"
|
echo "--- Verifying files ---"
|
||||||
REQUIRED_FILES=(
|
REQUIRED_FILES=(
|
||||||
c4
|
games
|
||||||
deploy/setup.sh
|
deploy/setup.sh
|
||||||
deploy/deploy.sh
|
deploy/deploy.sh
|
||||||
deploy/reassemble.sh
|
deploy/reassemble.sh
|
||||||
deploy/c4.service
|
deploy/games.service
|
||||||
)
|
)
|
||||||
for f in "${REQUIRED_FILES[@]}"; do
|
for f in "${REQUIRED_FILES[@]}"; do
|
||||||
if [[ ! -f "$f" ]]; then
|
if [[ ! -f "$f" ]]; then
|
||||||
@@ -48,12 +48,12 @@ done
|
|||||||
# Create tarball
|
# Create tarball
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
echo "--- Creating tarball ---"
|
echo "--- Creating tarball ---"
|
||||||
tar -czf "/tmp/${TARBALL}" --transform 's,^,c4/,' \
|
tar -czf "/tmp/${TARBALL}" --transform 's,^,games/,' \
|
||||||
c4 \
|
games \
|
||||||
deploy/setup.sh \
|
deploy/setup.sh \
|
||||||
deploy/deploy.sh \
|
deploy/deploy.sh \
|
||||||
deploy/reassemble.sh \
|
deploy/reassemble.sh \
|
||||||
deploy/c4.service
|
deploy/games.service
|
||||||
|
|
||||||
mv "/tmp/${TARBALL}" .
|
mv "/tmp/${TARBALL}" .
|
||||||
echo " -> ${TARBALL} ($(du -h "${TARBALL}" | cut -f1))"
|
echo " -> ${TARBALL} ($(du -h "${TARBALL}" | cut -f1))"
|
||||||
@@ -66,10 +66,10 @@ base64 "${TARBALL}" > "${BASE64_FILE}"
|
|||||||
echo " -> ${BASE64_FILE} ($(du -h "${BASE64_FILE}" | cut -f1))"
|
echo " -> ${BASE64_FILE} ($(du -h "${BASE64_FILE}" | cut -f1))"
|
||||||
|
|
||||||
echo "--- Splitting into 25MB chunks ---"
|
echo "--- Splitting into 25MB chunks ---"
|
||||||
split -b 25M -d --additional-suffix=.txt "${BASE64_FILE}" "c4-deploy-${TIMESTAMP}_b64_part"
|
split -b 25M -d --additional-suffix=.txt "${BASE64_FILE}" "games-deploy-${TIMESTAMP}_b64_part"
|
||||||
rm -f "${BASE64_FILE}"
|
rm -f "${BASE64_FILE}"
|
||||||
|
|
||||||
CHUNKS=(c4-deploy-${TIMESTAMP}_b64_part*.txt)
|
CHUNKS=(games-deploy-${TIMESTAMP}_b64_part*.txt)
|
||||||
echo " -> ${#CHUNKS[@]} chunk(s):"
|
echo " -> ${#CHUNKS[@]} chunk(s):"
|
||||||
for chunk in "${CHUNKS[@]}"; do
|
for chunk in "${CHUNKS[@]}"; do
|
||||||
echo " $chunk ($(du -h "$chunk" | cut -f1))"
|
echo " $chunk ($(du -h "$chunk" | cut -f1))"
|
||||||
@@ -83,5 +83,5 @@ echo "=== Package Complete ==="
|
|||||||
echo ""
|
echo ""
|
||||||
echo "Transfer the chunk files to the target server, then run:"
|
echo "Transfer the chunk files to the target server, then run:"
|
||||||
echo " ./reassemble.sh"
|
echo " ./reassemble.sh"
|
||||||
echo " cd ~/c4 && sudo ./deploy/setup.sh # first time only"
|
echo " cd ~/games && sudo ./deploy/setup.sh # first time only"
|
||||||
echo " cd ~/c4 && sudo ./deploy/deploy.sh"
|
echo " cd ~/games && sudo ./deploy/deploy.sh"
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# Reassembles base64 chunks and extracts the c4 deployment tarball.
|
# Reassembles base64 chunks and extracts the games deployment tarball.
|
||||||
# Expects chunk files in the current directory.
|
# Expects chunk files in the current directory.
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
cd "$HOME"
|
cd "$HOME"
|
||||||
|
|
||||||
echo "=== C4 Deployment Reassembler ==="
|
echo "=== Games Deployment Reassembler ==="
|
||||||
echo "Working directory: $HOME"
|
echo "Working directory: $HOME"
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
@@ -14,10 +14,10 @@ echo ""
|
|||||||
#==============================================================================
|
#==============================================================================
|
||||||
echo "--- Finding chunk files ---"
|
echo "--- Finding chunk files ---"
|
||||||
|
|
||||||
CHUNKS=($(ls -1 c4-deploy-*_b64_part*.txt 2>/dev/null | sort))
|
CHUNKS=($(ls -1 games-deploy-*_b64_part*.txt 2>/dev/null | sort))
|
||||||
|
|
||||||
if [[ ${#CHUNKS[@]} -eq 0 ]]; then
|
if [[ ${#CHUNKS[@]} -eq 0 ]]; then
|
||||||
echo "ERROR: No chunk files found matching c4-deploy-*_b64_part*.txt"
|
echo "ERROR: No chunk files found matching games-deploy-*_b64_part*.txt"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -32,8 +32,8 @@ done
|
|||||||
echo ""
|
echo ""
|
||||||
echo "--- Reassembling chunks ---"
|
echo "--- Reassembling chunks ---"
|
||||||
|
|
||||||
TIMESTAMP=$(echo "${CHUNKS[0]}" | sed -E 's/c4-deploy-([0-9]+-[0-9]+)_b64_part.*/\1/')
|
TIMESTAMP=$(echo "${CHUNKS[0]}" | sed -E 's/games-deploy-([0-9]+-[0-9]+)_b64_part.*/\1/')
|
||||||
TARBALL="c4-deploy-${TIMESTAMP}.tar.gz"
|
TARBALL="games-deploy-${TIMESTAMP}.tar.gz"
|
||||||
COMBINED="combined_b64.txt"
|
COMBINED="combined_b64.txt"
|
||||||
|
|
||||||
echo "Concatenating chunks..."
|
echo "Concatenating chunks..."
|
||||||
@@ -58,12 +58,12 @@ fi
|
|||||||
echo ""
|
echo ""
|
||||||
echo "--- Archiving existing source ---"
|
echo "--- Archiving existing source ---"
|
||||||
|
|
||||||
if [[ -d c4 ]]; then
|
if [[ -d games ]]; then
|
||||||
rm -rf c4.bak
|
rm -rf games.bak
|
||||||
mv c4 c4.bak
|
mv games games.bak
|
||||||
echo " -> Moved c4 -> c4.bak"
|
echo " -> Moved games -> games.bak"
|
||||||
else
|
else
|
||||||
echo " -> No existing c4 directory"
|
echo " -> No existing games directory"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
@@ -73,7 +73,7 @@ echo ""
|
|||||||
echo "--- Extracting tarball ---"
|
echo "--- Extracting tarball ---"
|
||||||
|
|
||||||
tar -xzf "$TARBALL"
|
tar -xzf "$TARBALL"
|
||||||
echo " -> Extracted to ~/c4"
|
echo " -> Extracted to ~/games"
|
||||||
|
|
||||||
#==============================================================================
|
#==============================================================================
|
||||||
# Cleanup
|
# Cleanup
|
||||||
@@ -91,6 +91,6 @@ echo ""
|
|||||||
echo "=== Reassembly Complete ==="
|
echo "=== Reassembly Complete ==="
|
||||||
echo ""
|
echo ""
|
||||||
echo "Next steps:"
|
echo "Next steps:"
|
||||||
echo " cd ~/c4"
|
echo " cd ~/games"
|
||||||
echo " sudo ./deploy/setup.sh # first time only"
|
echo " sudo ./deploy/setup.sh # first time only"
|
||||||
echo " sudo ./deploy/deploy.sh"
|
echo " sudo ./deploy/deploy.sh"
|
||||||
|
|||||||
@@ -10,20 +10,20 @@ fi
|
|||||||
|
|
||||||
# Create system user if it doesn't exist
|
# Create system user if it doesn't exist
|
||||||
if ! id -u games &>/dev/null; then
|
if ! id -u games &>/dev/null; then
|
||||||
useradd --system --shell /usr/sbin/nologin --home-dir /opt/c4 --create-home games
|
useradd --system --shell /usr/sbin/nologin --home-dir /opt/games --create-home games
|
||||||
echo "Created system user: games"
|
echo "Created system user: games"
|
||||||
else
|
else
|
||||||
echo "User 'games' already exists"
|
echo "User 'games' already exists"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Ensure install directory exists with correct ownership
|
# Ensure install directory exists with correct ownership
|
||||||
install -d -o games -g games -m 755 /opt/c4
|
install -d -o games -g games -m 755 /opt/games
|
||||||
install -d -o games -g games -m 755 /opt/c4/data
|
install -d -o games -g games -m 755 /opt/games/data
|
||||||
|
|
||||||
# Install systemd unit
|
# Install systemd unit
|
||||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||||
cp "$SCRIPT_DIR/c4.service" /etc/systemd/system/c4.service
|
cp "$SCRIPT_DIR/games.service" /etc/systemd/system/games.service
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl enable c4.service
|
systemctl enable games.service
|
||||||
|
|
||||||
echo "Setup complete. Run deploy.sh to build and start the service."
|
echo "Setup complete. Run deploy.sh to build and start the service."
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
services:
|
services:
|
||||||
c4:
|
games:
|
||||||
build: .
|
build: .
|
||||||
container_name: c4
|
container_name: games
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
- "8080:8080"
|
- "8080:8080"
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ func SetupSessionManager(db *sql.DB) (*scs.SessionManager, func()) {
|
|||||||
sessionManager := scs.New()
|
sessionManager := scs.New()
|
||||||
sessionManager.Store = store
|
sessionManager.Store = store
|
||||||
sessionManager.Lifetime = 30 * 24 * time.Hour
|
sessionManager.Lifetime = 30 * 24 * time.Hour
|
||||||
sessionManager.Cookie.Name = "c4_session"
|
sessionManager.Cookie.Name = "games_session"
|
||||||
sessionManager.Cookie.Path = "/"
|
sessionManager.Cookie.Path = "/"
|
||||||
sessionManager.Cookie.HttpOnly = true
|
sessionManager.Cookie.HttpOnly = true
|
||||||
sessionManager.Cookie.Secure = true
|
sessionManager.Cookie.Secure = true
|
||||||
|
|||||||
Reference in New Issue
Block a user