Add goatcounter build
parent
5070619286
commit
3f5e9edfbe
|
@ -0,0 +1,26 @@
|
|||
FROM debian:bookworm-slim
|
||||
|
||||
WORKDIR /goatcounter
|
||||
|
||||
ENV GOATCOUNTER_VERSION 'v2.2.3'
|
||||
ENV GOATCOUNTER_TAG 'dev'
|
||||
ENV GOATCOUNTER_LISTEN '0.0.0.0:8080'
|
||||
ENV GOATCOUNTER_DB 'sqlite+/data/goatcounter.sqlite3'
|
||||
ENV GOATCOUNTER_SMTP ''
|
||||
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y ca-certificates ncat wget \
|
||||
&& update-ca-certificates --fresh
|
||||
|
||||
RUN wget "https://github.com/zgoat/goatcounter/releases/download/$GOATCOUNTER_VERSION/goatcounter-$GOATCOUNTER_TAG-linux-amd64.gz" \
|
||||
&& gzip -d "goatcounter-$GOATCOUNTER_TAG-linux-amd64.gz" \
|
||||
&& mv "goatcounter-$GOATCOUNTER_TAG-linux-amd64" /usr/bin/goatcounter \
|
||||
&& chmod +x /usr/bin/goatcounter
|
||||
|
||||
COPY goatcounter.sh ./
|
||||
COPY entrypoint.sh /entrypoint.sh
|
||||
|
||||
EXPOSE 8080
|
||||
|
||||
ENTRYPOINT ["/entrypoint.sh"]
|
||||
CMD ["/goatcounter/goatcounter.sh"]
|
|
@ -0,0 +1,19 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -eu
|
||||
|
||||
create_site ()
|
||||
{
|
||||
goatcounter db create site \
|
||||
-vhost "$GOATCOUNTER_DOMAIN" \
|
||||
-user.email "$GOATCOUNTER_EMAIL" \
|
||||
-password "$GOATCOUNTER_PASSWORD" \
|
||||
-db "$GOATCOUNTER_DB"
|
||||
}
|
||||
|
||||
# silence any errors
|
||||
if ! create_site; then
|
||||
/bin/true
|
||||
fi
|
||||
|
||||
exec "$@"
|
|
@ -0,0 +1,45 @@
|
|||
# fly.toml file generated for goatcounter-mat-services on 2022-08-27T22:27:36-04:00
|
||||
|
||||
app = "goatcounter-mat-services"
|
||||
kill_signal = "SIGINT"
|
||||
kill_timeout = 5
|
||||
|
||||
[env]
|
||||
GOATCOUNTER_DOMAIN = "stats.mat.services"
|
||||
GOATCOUNTER_EMAIL = "mat@mat.services"
|
||||
LOG_SOURCE_HOST = "static-mat-services.internal"
|
||||
LOG_SOURCE_PORT = "514"
|
||||
|
||||
[experimental]
|
||||
allowed_public_ports = []
|
||||
auto_rollback = true
|
||||
|
||||
[mounts]
|
||||
destination = "/data"
|
||||
source = "goatcounter_data"
|
||||
|
||||
[[services]]
|
||||
http_checks = []
|
||||
internal_port = 8080
|
||||
processes = ["app"]
|
||||
protocol = "tcp"
|
||||
script_checks = []
|
||||
[services.concurrency]
|
||||
hard_limit = 25
|
||||
soft_limit = 20
|
||||
type = "connections"
|
||||
|
||||
[[services.ports]]
|
||||
force_https = true
|
||||
handlers = ["http"]
|
||||
port = 80
|
||||
|
||||
[[services.ports]]
|
||||
handlers = ["tls", "http"]
|
||||
port = 443
|
||||
|
||||
[[services.tcp_checks]]
|
||||
grace_period = "1s"
|
||||
interval = "15s"
|
||||
restart_limit = 0
|
||||
timeout = "2s"
|
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
declare OPTS=""
|
||||
|
||||
OPTS="$OPTS -automigrate"
|
||||
OPTS="$OPTS -listen $GOATCOUNTER_LISTEN"
|
||||
OPTS="$OPTS -tls none"
|
||||
OPTS="$OPTS -email-from $GOATCOUNTER_EMAIL"
|
||||
OPTS="$OPTS -db $GOATCOUNTER_DB"
|
||||
|
||||
if [ -n "$GOATCOUNTER_SMTP" ]; then
|
||||
OPTS="$OPTS -smtp $GOATCOUNTER_SMTP"
|
||||
fi
|
||||
|
||||
if [ -n "$GOATCOUNTER_DEBUG" ]; then
|
||||
OPTS="$OPTS -debug all"
|
||||
fi
|
||||
|
||||
ncat -l 9090 > /data/caddy.log &
|
||||
goatcounter import \
|
||||
-site=$GOATCOUNTER_DOMAIN \
|
||||
-follow \
|
||||
-format=combined \
|
||||
/data/caddy.log &
|
||||
|
||||
goatcounter serve $OPTS
|
Loading…
Reference in New Issue