Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f1a7e365bc
|
||
|
|
14d19a949f
|
||
|
|
e500bff0f1
|
||
|
|
6ba17b951e
|
||
|
|
e97be45bcc
|
||
|
|
c82abea21a
|
||
|
|
6fb95559b5
|
||
|
|
4346acb651
|
@@ -4,6 +4,63 @@ All notable changes to this project will be documented in this file.
|
|||||||
|
|
||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) but do not follows semantic versioning as it is useless in this type of project.
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) but do not follows semantic versioning as it is useless in this type of project.
|
||||||
|
|
||||||
|
## [2.7.4-7] - 2026-08-10
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
* GPG configuration for news user to skip keyboxd.
|
||||||
|
* Permission set script for /inn2.
|
||||||
|
* busybox-suid and nano packages installing.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
* norotate added to news.daily for proper statistics generation.
|
||||||
|
|
||||||
|
## [2.7.4-6] - 2026-08-09
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
* gpg configuration to skip keyboxd, so importing nocem gpg keys will work.
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
* nocem keyring will be removed and re-imported every container launch.
|
||||||
|
|
||||||
|
## [2.7.4-5] - 2026-08-02
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
* diffutils package installation for actsync to work.
|
||||||
|
|
||||||
|
## [2.7.4-4] - 2026-07-29
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
* nocem processing enablement with data from https://rosalind.home.xs4all.nl/nocemreg/nocemreg.html.
|
||||||
|
* cleanfeed installation
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
* stale pids removal script now always exits 0 if removal failed.
|
||||||
|
|
||||||
|
### Removed
|
||||||
|
|
||||||
|
* start-innd script which was used previously for starting innd.
|
||||||
|
|
||||||
|
## [2.7.4-3] - 2026-07-29
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
* remove stale pids on container start
|
||||||
|
|
||||||
|
## [2.7.4-2] - 2026-07-26
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
* switch to s6-overlay (which is more suitable for containers than plain s6).
|
||||||
|
* syslogd support via s6-overlay.
|
||||||
|
* cron daemon with set of default cronjobs.
|
||||||
|
|
||||||
## [2.7.4-1] - 2026-07-26
|
## [2.7.4-1] - 2026-07-26
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
@@ -19,5 +76,11 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/)
|
|||||||
|
|
||||||
Initial container release with inn 2.7.4 built with perl/python/sqlite support.
|
Initial container release with inn 2.7.4 built with perl/python/sqlite support.
|
||||||
|
|
||||||
|
[2.7.4-7]: https://code.pztrn.name/containers/inn2/compare/2.7.4-6...2.7.4-7
|
||||||
|
[2.7.4-6]: https://code.pztrn.name/containers/inn2/compare/2.7.4-5...2.7.4-6
|
||||||
|
[2.7.4-5]: https://code.pztrn.name/containers/inn2/compare/2.7.4-4...2.7.4-5
|
||||||
|
[2.7.4-4]: https://code.pztrn.name/containers/inn2/compare/2.7.4-3...2.7.4-4
|
||||||
|
[2.7.4-3]: https://code.pztrn.name/containers/inn2/compare/2.7.4-2...2.7.4-3
|
||||||
|
[2.7.4-2]: https://code.pztrn.name/containers/inn2/compare/2.7.4-1...2.7.4-2
|
||||||
[2.7.4-1]: https://code.pztrn.name/containers/inn2/compare/2.7.4...2.7.4-1
|
[2.7.4-1]: https://code.pztrn.name/containers/inn2/compare/2.7.4...2.7.4-1
|
||||||
[2.7.4]: https://code.pztrn.name/containers/inn2/releases/tag/2.7.4
|
[2.7.4]: https://code.pztrn.name/containers/inn2/releases/tag/2.7.4
|
||||||
|
|||||||
+19
-7
@@ -4,14 +4,17 @@ ENV PERL_MM_USE_DEFAULT=1
|
|||||||
RUN apk add --no-cache \
|
RUN apk add --no-cache \
|
||||||
bison \
|
bison \
|
||||||
build-base \
|
build-base \
|
||||||
|
busybox-suid \
|
||||||
bzip2 \
|
bzip2 \
|
||||||
curl \
|
curl \
|
||||||
|
diffutils \
|
||||||
flex \
|
flex \
|
||||||
gawk \
|
gawk \
|
||||||
gd-dev \
|
gd-dev \
|
||||||
gnupg \
|
gnupg \
|
||||||
libgd \
|
libgd \
|
||||||
krb5-dev \
|
krb5-dev \
|
||||||
|
nano \
|
||||||
openssl \
|
openssl \
|
||||||
openssl-dev \
|
openssl-dev \
|
||||||
perl \
|
perl \
|
||||||
@@ -19,7 +22,8 @@ RUN apk add --no-cache \
|
|||||||
perl-utils \
|
perl-utils \
|
||||||
python3 \
|
python3 \
|
||||||
python3-dev \
|
python3-dev \
|
||||||
s6 \
|
s6-overlay \
|
||||||
|
s6-overlay-syslogd \
|
||||||
shadow \
|
shadow \
|
||||||
sqlite-dev \
|
sqlite-dev \
|
||||||
ssmtp \
|
ssmtp \
|
||||||
@@ -44,18 +48,26 @@ RUN mkdir /src && cd /src && \
|
|||||||
mv /inn2/etc /inn2/etc-default && \
|
mv /inn2/etc /inn2/etc-default && \
|
||||||
mv /inn2/db /inn2/db-default && \
|
mv /inn2/db /inn2/db-default && \
|
||||||
mv /inn2/spool /inn2/spool-default && \
|
mv /inn2/spool /inn2/spool-default && \
|
||||||
|
# cleanfeed
|
||||||
|
cd /src && curl -sL https://github.com/infybofh/cleanfeed-ng/archive/refs/tags/2026-07-03-rc1.tar.gz | tar xz && cd cleanfeed-ng-2026-07-03-rc1 && \
|
||||||
|
cp cleanfeed /inn2/bin/filter/filter_innd.pl && \
|
||||||
|
mkdir /inn2/etc-default/cleanfeed && \
|
||||||
|
cp cleanfeed.local.example /inn2/etc-default/cleanfeed/cleanfeed.local && \
|
||||||
|
cp samples/* /inn2/etc-default/cleanfeed && \
|
||||||
|
mkdir -p /inn2/spool-default/cleanfeed && \
|
||||||
|
mkdir -p /var/www/ && \
|
||||||
|
chown -R news:news /var/www && \
|
||||||
rm -rf /src
|
rm -rf /src
|
||||||
|
|
||||||
COPY configuration /etc
|
COPY etc /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
|
RUN groupmod -g 600 news && usermod -u 600 -g 600 -d /inn2 news && chown -R news:news /inn2 && chown -R news:news /etc/cont-init.d /etc/services.d
|
||||||
|
|
||||||
WORKDIR /inn2
|
WORKDIR /inn2
|
||||||
ENV PATH=/inn2/bin:$PATH
|
ENV PATH=/inn2/bin:$PATH
|
||||||
USER news
|
ENV CLEANFEED_CONFIG_DIR=/inn2/etc/cleanfeed
|
||||||
EXPOSE 119
|
EXPOSE 119
|
||||||
EXPOSE 563
|
EXPOSE 563
|
||||||
VOLUME [ "/inn2/db", "/inn2/spool", "/inn2/log" ]
|
VOLUME [ "/inn2/db", "/inn2/spool", "/inn2/log", "/var/www" ]
|
||||||
|
|
||||||
CMD ["/usr/bin/s6-svscan", "/etc/s6"]
|
ENTRYPOINT [ "/init" ]
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
This repository holds files neccessary to build inn2 (InterNet News 2), a NNTP server.
|
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).
|
This container is based on [greenbender's image](https://github.com/greenbender/inn-docker) and includes enabled nocems processing and cleanfeed.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
@@ -26,6 +26,8 @@ services:
|
|||||||
- "./data/run:/inn2/run"
|
- "./data/run:/inn2/run"
|
||||||
- "./data/spool:/inn2/spool"
|
- "./data/spool:/inn2/spool"
|
||||||
- "./data/tmp:/inn2/tmp"
|
- "./data/tmp:/inn2/tmp"
|
||||||
|
- "./data/syslog:/var/log"
|
||||||
|
- "./data/www:/var/www"
|
||||||
ulimits:
|
ulimits:
|
||||||
nofile:
|
nofile:
|
||||||
soft: 65535
|
soft: 65535
|
||||||
@@ -47,6 +49,8 @@ services:
|
|||||||
- "./data/run:/inn2/run"
|
- "./data/run:/inn2/run"
|
||||||
- "./data/spool:/inn2/spool"
|
- "./data/spool:/inn2/spool"
|
||||||
- "./data/tmp:/inn2/tmp"
|
- "./data/tmp:/inn2/tmp"
|
||||||
|
- "./data/syslog:/var/log"
|
||||||
|
- "./data/www:/var/www"
|
||||||
networks:
|
networks:
|
||||||
inn2-ipvlan:
|
inn2-ipvlan:
|
||||||
ipv4_address: 192.168.168.168 # ip address from real LAN.
|
ipv4_address: 192.168.168.168 # ip address from real LAN.
|
||||||
@@ -81,16 +85,28 @@ Note that this code is built to support dual-stack (IPv4+IPv6). You should eithe
|
|||||||
|
|
||||||
## Cronjobs
|
## 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:
|
This Docker image come with a recommended in documentation set of cronjobs. To customize it copy `etc/crontabs/news` file, make neccessary changes and mount it to container in `/etc/crontabs/news`.
|
||||||
|
|
||||||
|
If you want to use cron outside of your container:
|
||||||
|
|
||||||
```shell
|
```shell
|
||||||
0 3 * * * docker compose run inn news.daily expireover lowmark
|
0 3 * * * docker compose run inn news.daily expireover lowmark delayrm
|
||||||
```
|
```
|
||||||
|
|
||||||
## Sending emails
|
## Sending emails
|
||||||
|
|
||||||
As this container has no postfix installed (why do you might ever need it here?) you can use [ssmtp](https://wiki.debian.org/sSMTP) which installed in container to get mails sent over SMTP.
|
As this container has no postfix installed (why do you might ever need it here?) you can use [ssmtp](https://wiki.debian.org/sSMTP) which installed in container to get mails sent over SMTP.
|
||||||
|
|
||||||
|
## No See 'Em's
|
||||||
|
|
||||||
|
This container has nocem enabled and neccessary data will be loaded on first start from [NoCeM registry](https://rosalind.home.xs4all.nl/nocemreg/nocemreg.html).
|
||||||
|
|
||||||
|
Make sure you have `news.lists.filters` group created.
|
||||||
|
|
||||||
|
## Cleanfeed
|
||||||
|
|
||||||
|
Cleanfeed is automatically installed from [infybofh's repository](https://github.com/infybofh/cleanfeed-ng). Configuration is located in `/inn2/etc/cleanfeed` directory within container, please configure it according to your needs.
|
||||||
|
|
||||||
## Versioning
|
## Versioning
|
||||||
|
|
||||||
Image versioning follows official inn2 versions with additional optional version postfix added to indicate image fixes for particular version.
|
Image versioning follows official inn2 versions with additional optional version postfix added to indicate image fixes for particular version.
|
||||||
@@ -115,3 +131,14 @@ inn2 is launched as UID/GID 600 in container, so chown directories properly acco
|
|||||||
|
|
||||||
* If you're not using userns isolation - use `chown 600:600`.
|
* 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`.
|
* 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`.
|
||||||
|
|
||||||
|
## Logs
|
||||||
|
|
||||||
|
Logs are split in two destinations:
|
||||||
|
|
||||||
|
* `/inn2/log` - default INN logs destination.
|
||||||
|
* `/var/log` - syslog logs.
|
||||||
|
|
||||||
|
As INN might log in both of them you should mount a directory for each.
|
||||||
|
|
||||||
|
For syslog logs it is a known bug that logs isn't written in `/var/log/innd` or `/var/log/nnrpd`, take a look at `/var/log/syslogd/everything/current` for logs with `news` topic. This might be fixed somewhere soon.
|
||||||
|
|||||||
@@ -1,5 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
for file in /etc/s6/*/finish; do
|
|
||||||
$file
|
|
||||||
done
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
kill "$(cat /inn2/run/innd.pid)"
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/execlineb -P
|
|
||||||
|
|
||||||
/start-innd
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
kill "$(cat /inn2/run/nnrpd-563.pid)"
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
#!/bin/execlineb -P
|
|
||||||
|
|
||||||
nnrpd -D -f -p 563 -S
|
|
||||||
Executable
+3
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
chown -R news:news /inn2
|
||||||
Executable
+9
@@ -0,0 +1,9 @@
|
|||||||
|
#!/bin/sh -e
|
||||||
|
|
||||||
|
mkdir -p /var/log/innd
|
||||||
|
chown -R 65534:65534 /var/log/innd
|
||||||
|
chmod 02755 /var/log/innd
|
||||||
|
|
||||||
|
mkdir -p /var/log/nnrpd
|
||||||
|
chown -R 65534:65534 /var/log/nnrpd
|
||||||
|
chmod 02755 /var/log/nnrpd
|
||||||
Executable
+5
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ ! -f "/inn2/etc/inn.conf" ]; then
|
||||||
|
cp -r /inn2/etc-default/* /inn2/etc
|
||||||
|
fi
|
||||||
Executable
+5
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ ! -f "/inn2/db/history" ]; then
|
||||||
|
cp -r /inn2/db-default/* /inn2/db
|
||||||
|
fi
|
||||||
Executable
+5
@@ -0,0 +1,5 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ ! -d "/inn2/spool/articles" ]; then
|
||||||
|
cp -r /inn2/spool-default/* /inn2/spool
|
||||||
|
fi
|
||||||
Executable
+22
@@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ -f "/etc/gpg/gpg.conf" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf /etc/gpg || exit 0
|
||||||
|
mkdir -p /etc/gpg
|
||||||
|
echo "#use-keyboxd" > /etc/gpg/gpg.conf
|
||||||
|
|
||||||
|
rm -rf /inn2/.gnupg
|
||||||
|
mkdir -p /inn2/.gnupg
|
||||||
|
echo "#use-keyboxd" > /inn2/.gnupg/common.conf
|
||||||
|
chown -R news:news /inn2/.gnupg
|
||||||
|
chmod 0700 /inn2/.gnupg
|
||||||
|
chmod 0600 /inn2/.gnupg/common.conf
|
||||||
|
|
||||||
|
rm -rf /root/.gnupg
|
||||||
|
mkdir -p /root/.gnupg
|
||||||
|
echo "#use-keyboxd" > /root/.gnupg/common.conf
|
||||||
|
chmod 0700 /root/.gnupg
|
||||||
|
chmod 0600 /root/.gnupg/common.conf
|
||||||
Executable
+3
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
chown news:news /etc/crontabs/news
|
||||||
Executable
+15
@@ -0,0 +1,15 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ ! -d "/inn2/etc/pgp" ]; then
|
||||||
|
mkdir -p "/inn2/etc/pgp"
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "* Downloading NoCeM gpg keys and ctl file..."
|
||||||
|
|
||||||
|
rm /inn2/etc/pgp/ncmring.gpg
|
||||||
|
curl -o /inn2/etc/pgp/ncmring.gpg.source https://rosalind.home.xs4all.nl/nocemreg/ncmring.asc
|
||||||
|
gpg --no-default-keyring --keyring /inn2/etc/pgp/ncmring.gpg --import /inn2/etc/pgp/ncmring.gpg.source
|
||||||
|
chown -R news:news /inn2/etc/nocem.ctl /inn2/etc/pgp
|
||||||
|
|
||||||
|
echo "* Enabling NoCeM processing..."
|
||||||
|
sed -i '/^#nocem/ { s/^#//; n; s/^#//; }' /inn2/etc/newsfeeds
|
||||||
Executable
+13
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
if [ ! -d "/inn2/etc/cleanfeed" ]; then
|
||||||
|
cp -r "/inn2/etc-default/cleanfeed" "/inn2/etc"
|
||||||
|
chown -R news:news "/inn2/etc/cleanfeed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -d "/inn2/spool/cleanfeed" ]; then
|
||||||
|
mkdir -p "/inn2/spool/cleanfeed"
|
||||||
|
chown -R news:news "/inn2/spool/cleanfeed"
|
||||||
|
fi
|
||||||
|
|
||||||
|
chown -R news:news /var/www
|
||||||
Executable
+3
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
rm "/inn2/run/*.pid" || exit 0
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
# min hour day month weekday command
|
||||||
|
0 5 * * * cd /inn2; /inn2/bin/news.daily expireover lowmark delayrm norotate
|
||||||
|
15 * * * * cd /inn2; /inn2/bin/rnews -U
|
||||||
|
0 4 * * * cd /inn2; /inn2/bin/ctlinnd -t 120 -s reload incoming.conf 'flush cache'
|
||||||
|
*/10 * * * * cd /inn2; /inn2/bin/nntpsend
|
||||||
Executable
+3
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
/usr/sbin/crond -f
|
||||||
Executable
+3
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
exec logutil-service /var/log/innd
|
||||||
Executable
+4
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
exec 2>&1
|
||||||
|
exec s6-setuidgid news /inn2/bin/innd -f
|
||||||
Executable
+3
@@ -0,0 +1,3 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
exec logutil-service /var/log/nnrpd
|
||||||
Executable
+4
@@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
exec 2>&1
|
||||||
|
exec s6-setuidgid news nnrpd -D -f -p 563 -S
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
#!/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 || exit 1
|
|
||||||
|
|
||||||
/inn2/bin/innd -f
|
|
||||||
Reference in New Issue
Block a user