@@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
when:
|
||||||
|
- event: ["tag"]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: "Build tagged container"
|
||||||
|
image: "code.pztrn.name/containers/mirror/docker:29.6.2-dind"
|
||||||
|
environment:
|
||||||
|
DRONE_USER_PASSWORD:
|
||||||
|
from_secret: DRONE_USER_PASSWORD
|
||||||
|
commands:
|
||||||
|
- docker login -u drone -p $${DRONE_USER_PASSWORD} code.pztrn.name
|
||||||
|
- docker build --pull -t code.pztrn.name/containers/inn2:$${CI_COMMIT_TAG} -f Dockerfile .
|
||||||
|
- docker push code.pztrn.name/containers/inn2:$${CI_COMMIT_TAG}
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
+58
@@ -0,0 +1,58 @@
|
|||||||
|
FROM code.pztrn.name/containers/mirror/alpine:3.24.1 AS build
|
||||||
|
|
||||||
|
ENV PERL_MM_USE_DEFAULT=1
|
||||||
|
RUN apk add --no-cache \
|
||||||
|
bison \
|
||||||
|
build-base \
|
||||||
|
curl \
|
||||||
|
gawk \
|
||||||
|
gd-dev \
|
||||||
|
gnupg \
|
||||||
|
libgd \
|
||||||
|
krb5-dev \
|
||||||
|
openssl \
|
||||||
|
openssl-dev \
|
||||||
|
perl \
|
||||||
|
perl-dev \
|
||||||
|
perl-utils \
|
||||||
|
python3 \
|
||||||
|
python3-dev \
|
||||||
|
s6 \
|
||||||
|
shadow \
|
||||||
|
sqlite-dev \
|
||||||
|
tar \
|
||||||
|
zlib-dev && \
|
||||||
|
cpan -T GD MIME::Parser && \
|
||||||
|
rm -rf /root/.cpan
|
||||||
|
|
||||||
|
|
||||||
|
ARG VERSION=2.7.4
|
||||||
|
RUN curl -sL https://github.com/InterNetNews/inn/releases/download/${VERSION}/inn-${VERSION}.tar.gz | tar xz
|
||||||
|
|
||||||
|
WORKDIR /inn-${VERSION}
|
||||||
|
RUN ./configure --prefix=/inn2 --with-zlib --with-openssl --with-sqlite --with-krb5 --with-perl --with-python && \
|
||||||
|
make && \
|
||||||
|
sed -i 's/#domain:/domain: news.localhost/' site/inn.conf && \
|
||||||
|
make install
|
||||||
|
|
||||||
|
RUN sed -i 's/#\(tlscapath:\)/\1/' /inn2/etc/inn.conf && \
|
||||||
|
sed -i 's/#\(tlscertfile:\)/\1/' /inn2/etc/inn.conf && \
|
||||||
|
sed -i 's/#\(tlskeyfile:\)/\1/' /inn2/etc/inn.conf && \
|
||||||
|
mv /inn2/etc /inn2/etc-default && \
|
||||||
|
mv /inn2/db /inn2/db-default && \
|
||||||
|
mv /inn2/spool /inn2/spool-default
|
||||||
|
|
||||||
|
COPY configuration /etc
|
||||||
|
COPY start-innd.sh /start-innd
|
||||||
|
|
||||||
|
RUN groupmod -g 600 news && usermod -u 600 -g 600 -d /inn2 news && chown -R news:news /inn2 && chown -R news:news /etc/s6
|
||||||
|
|
||||||
|
WORKDIR /inn2
|
||||||
|
ENV PATH=/inn2/bin:$PATH
|
||||||
|
ENV PERL_MM_USE_DEFAULT=1
|
||||||
|
USER news
|
||||||
|
EXPOSE 119
|
||||||
|
EXPOSE 563
|
||||||
|
VOLUME [ "/inn2/db", "/inn2/spool", "/inn2/log" ]
|
||||||
|
|
||||||
|
CMD ["/usr/bin/s6-svscan", "/etc/s6"]
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
# inn2 Docker container
|
||||||
|
|
||||||
|
This repository holds files neccessary to build inn2 (InterNet News 2), a NNTP server.
|
||||||
|
|
||||||
|
This container is based on [greenbender's image](https://github.com/greenbender/inn-docker).
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
|
||||||
|
Configuration files are described on [inn official site](https://www.eyrie.org/~eagle/software/inn/) (select proper version from right sidebar).
|
||||||
|
|
||||||
|
Using this container with compose:
|
||||||
|
|
||||||
|
```yaml
|
||||||
|
---
|
||||||
|
services:
|
||||||
|
inn:
|
||||||
|
image: "code.pztrn.name/containers/inn2"
|
||||||
|
restart: always
|
||||||
|
ports:
|
||||||
|
- 119:119
|
||||||
|
- 563:563
|
||||||
|
volumes:
|
||||||
|
- "./data/db:/inn2/db"
|
||||||
|
- "./data/etc:/inn2/etc"
|
||||||
|
- "./data/log:/inn2/log"
|
||||||
|
- "./data/run:/inn2/run"
|
||||||
|
- "./data/spool:/inn2/spool"
|
||||||
|
- "./data/tmp:/inn2/tmp"
|
||||||
|
ulimits:
|
||||||
|
nofile:
|
||||||
|
soft: 65535
|
||||||
|
hard: 65535
|
||||||
|
```
|
||||||
|
|
||||||
|
## Cronjobs
|
||||||
|
|
||||||
|
There is a section in documentation about cron jobs you should configure. This docker image currently isn't supporting these, so configure it separately with lines like:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
0 3 * * * docker compose run inn news.daily expireover lowmark
|
||||||
|
```
|
||||||
|
|
||||||
|
## Versioning
|
||||||
|
|
||||||
|
Image versioning follows official inn2 versions with additional optional version postfix added to indicate image fixes for particular version.
|
||||||
|
|
||||||
|
Examples:
|
||||||
|
|
||||||
|
* 2.7.4-3 - inn version 2.7.4 and 3 additional fixes applied to container.
|
||||||
|
* 2.7.6 - inn version 2.7.6 without additional container fixes.
|
||||||
|
|
||||||
|
## Data directories and permissions
|
||||||
|
|
||||||
|
Configuration is kept in `/inn2/etc`, mount it in your local filesystem. Entrypoint script will copy default configuration for you if missing.
|
||||||
|
|
||||||
|
This container exposes `/inn2/db`, `/inn2/spool`, `/inn2/log` as volumes, so you may either:
|
||||||
|
|
||||||
|
* Leave as is, Docker will create separate volume for your data.
|
||||||
|
* Mount volume somewhere, like in compose example above.
|
||||||
|
|
||||||
|
inn2 is launched as UID/GID 600 in container, so chown directories properly according to your Docker configuration:
|
||||||
|
|
||||||
|
* If you're not using userns isolation - use `chown 600:600`.
|
||||||
|
* If you're using it - use `600 + id from /etc/subuid`, e.g. if you're using default Docker remapping this could be `chown 100600:100600`.
|
||||||
Executable
+5
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
for file in /etc/s6/*/finish; do
|
||||||
|
$file
|
||||||
|
done
|
||||||
Executable
+3
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
kill "$(cat /inn2/run/innd.pid)"
|
||||||
Executable
+3
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/execlineb -P
|
||||||
|
|
||||||
|
/start-innd
|
||||||
Executable
+3
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
kill "$(cat /inn2/run/nnrpd-563.pid)"
|
||||||
Executable
+3
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/execlineb -P
|
||||||
|
|
||||||
|
nnrpd -D -f -p 563 -S
|
||||||
Executable
+17
@@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ ! -f "/inn2/etc/inn.conf" ]; then
|
||||||
|
cp -r /inn2/etc-default/* /inn2/etc
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "/inn2/db/history" ]; then
|
||||||
|
cp -r /inn2/db-default/* /inn2/db
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "/inn2/spool/articles" ]; then
|
||||||
|
cp -r /inn2/spool-default/* /inn2/spool
|
||||||
|
fi
|
||||||
|
|
||||||
|
cd /inn2
|
||||||
|
|
||||||
|
/inn2/bin/innd -f
|
||||||
Reference in New Issue
Block a user