Compare commits

...

15 Commits
1.5.2 ... main

Author SHA1 Message Date
26736ed57f
push to 1.6.7
Some checks failed
Build Multiarch Container Image / call-reusable-workflow (push) Failing after 0s
2024-05-27 10:44:22 +02:00
d307aadf40
add managesieve
All checks were successful
Build Multiarch Container Image / call-reusable-workflow (push) Successful in 1m32s
2024-04-26 22:08:57 +02:00
efc49cad69
new build method
All checks were successful
Build Multiarch Container Image / call-reusable-workflow (push) Successful in 1m31s
2024-04-26 14:08:00 +02:00
4640dab8d2
push to 1.6.6 2024-03-28 14:57:43 +01:00
fc4e33a9b9
push to 1.6.5 2024-01-01 16:55:39 +01:00
a7341bac2c
push to 1.6.3 2023-09-26 15:41:34 +02:00
6568947669 set script name (https://github.com/roundcube/roundcubemail/issues/8878) 2023-01-25 12:47:06 +01:00
4811e61883 push to 1.6.1 2023-01-25 08:17:19 +01:00
0e4f178208
use php 8.1 2022-11-23 14:02:16 +01:00
fd5df047d1 listen on all interfaces 2022-11-13 10:29:12 +01:00
690e6fe639 Add '.woodpecker.yml' 2022-11-11 07:42:22 +00:00
b4767957f3 Delete '.gitlab-ci.yml' 2022-11-11 07:41:28 +00:00
7e87ef3ea2
remove managesieve plugin 2022-09-11 12:52:13 +02:00
eadb3c5aaa
ush to version 1.6.0 2022-09-10 18:18:22 +02:00
53910bee43 use newer base image 2022-07-12 19:49:44 +02:00
7 changed files with 121 additions and 103 deletions

View File

@ -0,0 +1,12 @@
name: Build Multiarch Container Image
on: [push]
jobs:
call-reusable-workflow:
uses: container/multiarch-build-workflow/.gitea/workflows/build.yaml@main
with:
repository: ${{ gitea.repository }}
ref_name: ${{ gitea.ref_name }}
sha: ${{ gitea.sha }}
registry_url: ${{ secrets.REGISTRY_URL }}
registry_user: ${{ secrets.REGISTRY_USER }}
registry_pw: ${{ secrets.REGISTRY_PW }}

View File

@ -1,18 +0,0 @@
variables:
CONTAINER_NAME: thallian/roundcube
build:
stage: build
image:
name: gcr.io/kaniko-project/executor:debug
entrypoint: [""]
script:
- mkdir -p /kaniko/.docker
- echo "{\"auths\":{\"$CI_REGISTRY\":{\"auth\":\"$(printf "%s:%s" "$CI_REGISTRY_USER" "$CI_REGISTRY_PASSWORD" | base64 | tr -d '\n')\"}}}" > /kaniko/.docker/config.json
- >-
/kaniko/executor
--context "$CI_PROJECT_DIR"
--dockerfile "$CI_PROJECT_DIR/Dockerfile"
--destination "$CONTAINER_NAME:$CI_COMMIT_SHA"
--destination "$CONTAINER_NAME:$CI_COMMIT_REF_NAME"
--destination "$CONTAINER_NAME:latest"

73
Containerfile Normal file
View File

@ -0,0 +1,73 @@
FROM docker.io/alpine:3.20 AS builder
RUN apk add --no-cache \
php83 \
php83-phar \
php83-mbstring \
php83-openssl \
php83-ctype \
php83-gd \
php83-dom \
php83-xml \
php83-ldap \
php83-xmlreader \
php83-xmlwriter
ENV COMPOSER_VERSION=2.6.6
ENV COMPOSER_SHA256_SUM=72600201c73c7c4b218f1c0511b36d8537963e36aafa244757f52309f885b314
RUN wget https://getcomposer.org/download/$COMPOSER_VERSION/composer.phar -O /bin/composer
RUN echo "$COMPOSER_SHA256_SUM /bin/composer" | sha256sum -c - || exit 1
RUN chmod +x /bin/composer
ENV VERSION=1.6.7
ENV SHA256_SUM=cf52515e65b2818cb02fd7a202c766367b8c54d8b7fea27dda9c81aa7ce1d3a6
RUN wget https://github.com/roundcube/roundcubemail/releases/download/$VERSION/roundcubemail-$VERSION-complete.tar.gz
RUN echo "$SHA256_SUM roundcubemail-$VERSION-complete.tar.gz" | sha256sum -c - || exit 1
RUN mkdir -p /var/lib/roundcube
RUN tar xzf roundcubemail-$VERSION-complete.tar.gz -C /var/lib/roundcube --strip 1
FROM docker.io/thallian/php8-fpm:3.20-8.3
RUN apk add --no-cache \
openssl \
tar \
nginx \
postgresql-client \
aspell \
ca-certificates \
php83 \
php83-imap \
php83-dom \
php83-json \
php83-xml \
php83-session \
php83-pdo \
php83-pdo_pgsql \
php83-sockets \
php83-exif \
php83-iconv \
php83-openssl \
php83-mbstring \
php83-sockets \
php83-zip \
php83-pspell \
php83-pecl-apcu \
php83-gd \
php83-ctype \
php83-xmlreader \
php83-xmlwriter \
php83-tokenizer \
php83-curl \
php83-simplexml \
php83-xml \
php83-dom \
php83-intl
COPY --from=builder --chown=nginx:nginx /var/lib/roundcube /var/lib/roundcube
ADD /rootfs /
EXPOSE 8080
ENV FPMUSER nginx
ENV FPMGROUP nginx

View File

@ -1,78 +0,0 @@
FROM docker.io/alpine:3.15 AS builder
RUN apk add --no-cache \
php8 \
php8-phar \
php8-mbstring \
php8-openssl \
php8-ctype \
php8-gd \
php8-dom \
php8-xml \
php8-ldap \
php8-xmlreader \
php8-xmlwriter
RUN ln -s /usr/bin/php8 /usr/bin/php
ENV COMPOSER_VERSION=2.1.6
ENV COMPOSER_SHA256_SUM=72524ccebcb071968eb83284507225fdba59f223719b2b3f333d76c8a9ac6b72
RUN wget https://getcomposer.org/download/$COMPOSER_VERSION/composer.phar
RUN echo "$COMPOSER_SHA256_SUM composer.phar" | sha256sum -c - || exit 1
RUN mv composer.phar /usr/bin/composer
RUN chmod +x /usr/bin/composer
ENV VERSION=1.5.3
ENV SHA256_SUM=4bcfac219f2e0005c912dac3227743cc1ed0ded69c822f74c81a70d041e5a3bd
RUN wget https://github.com/roundcube/roundcubemail/releases/download/$VERSION/roundcubemail-$VERSION-complete.tar.gz
RUN echo "$SHA256_SUM roundcubemail-$VERSION-complete.tar.gz" | sha256sum -c - || exit 1
RUN mkdir -p /var/lib/roundcube
RUN tar xzf roundcubemail-$VERSION-complete.tar.gz -C /var/lib/roundcube --strip 1
FROM docker.io/thallian/php8-fpm:latest
RUN apk add --no-cache \
openssl \
tar \
nginx \
postgresql-client \
aspell \
ca-certificates \
php8 \
php8-imap \
php8-dom \
php8-json \
php8-xml \
php8-session \
php8-pdo \
php8-pdo_pgsql \
php8-sockets \
php8-exif \
php8-iconv \
php8-openssl \
php8-mbstring \
php8-sockets \
php8-pecl-mcrypt \
php8-zip \
php8-pspell \
php8-pecl-apcu \
php8-gd \
php8-ctype \
php8-xmlreader \
php8-xmlwriter \
php8-tokenizer \
php8-curl \
php8-simplexml \
php8-xml \
php8-dom \
php8-intl
COPY --from=builder --chown=nginx:nginx /var/lib/roundcube /var/lib/roundcube
ADD /rootfs /
EXPOSE 8080
ENV FPMUSER nginx
ENV FPMGROUP nginx

View File

@ -1,73 +1,99 @@
[Roundcube](https://roundcube.net/) webmail interface with postgres backend and oauth login. [Roundcube](https://roundcube.net/) webmail interface with postgres backend and
oauth login.
# Environment Variables # Environment Variables
## DOMAINS ## DOMAINS
Semicolon seperated list of domains to listen to. Semicolon seperated list of domains to listen to.
## DB_USER ## DB_USER
Name of the database user. Name of the database user.
## DB_PASSWORD ## DB_PASSWORD
Password for the database user. Password for the database user.
## DB_HOST ## DB_HOST
Database host. Database host.
## DB_NAME ## DB_NAME
Database name. Database name.
## IMAP_HOST ## IMAP_HOST
- default: tls://%n - default: tls://%n
IMAP host to authenticate users against. IMAP host to authenticate users against.
## SMTP_HOST ## SMTP_HOST
- default: tls://%n - default: tls://%n
SMTP host for sending mails. SMTP host for sending mails.
## SMTP_PORT ## SMTP_PORT
- default: 587 - default: 587
Port for the SMTP host. Port for the SMTP host.
## SECRET_KEY ## SECRET_KEY
Secret key for session secrets. Secret key for session secrets.
## CIPHER_METHOD ## CIPHER_METHOD
- default: AES-256-CBC - default: AES-256-CBC
Encryption algorithm for session secrets. Encryption algorithm for session secrets.
## OAUTH_PROVIDER_NAME ## OAUTH_PROVIDER_NAME
Name of the oauth provider on the roundcube login page. Name of the oauth provider on the roundcube login page.
## OAUTH_CLIENT_ID ## OAUTH_CLIENT_ID
Client id for oauth login. Client id for oauth login.
## OAUTH_CLIENT_SECRET ## OAUTH_CLIENT_SECRET
Client secret for oauth login. Client secret for oauth login.
## OAUTH_AUTH_URI ## OAUTH_AUTH_URI
Auth uri for oauth login. Auth uri for oauth login.
Example for keycloak: `https://example.com/realms/master/protocol/openid-connect/auth` Example for keycloak:
`https://example.com/realms/master/protocol/openid-connect/auth`
## OAUTH_TOKEN_URI ## OAUTH_TOKEN_URI
Token uri for oauth login. Token uri for oauth login.
Example for keycloak: `https://example.com/realms/master/protocol/openid-connect/token` Example for keycloak:
`https://example.com/realms/master/protocol/openid-connect/token`
## OAUTH_IDENTITY_URI ## OAUTH_IDENTITY_URI
Userinfo uri for oauth login. Userinfo uri for oauth login.
Example for keycloak: `https://example.com/realms/master/protocol/openid-connect/userinfo` Example for keycloak:
`https://example.com/realms/master/protocol/openid-connect/userinfo`
## MANAGESIEVE_HOST
Where to connect to managesieve.
# Ports # Ports
- 80 - 80
# Capabilities # Capabilities
- CHOWN - CHOWN
- DAC_OVERRIDE - DAC_OVERRIDE
- NET_BIND_SERVICE - NET_BIND_SERVICE

View File

@ -7,7 +7,7 @@ $config['log_driver'] = 'stdout';
$config['skin'] = 'elastic'; $config['skin'] = 'elastic';
$config['default_host'] = '{{getenv "IMAP_HOST" "tls://%n"}}'; $config['imap_host'] = '{{getenv "IMAP_HOST" "tls://%n"}}';
$config['imap_conn_options'] = array( $config['imap_conn_options'] = array(
'ssl' => array( 'ssl' => array(
'verify_peer' => true, 'verify_peer' => true,
@ -15,8 +15,9 @@ $config['imap_conn_options'] = array(
), ),
); );
$config['smtp_server'] = '{{getenv "SMTP_HOST" "tls://%n"}}'; $config['request_path'] = 'SCRIPT_NAME';
$config['smtp_port'] = {{getenv "SMTP_PORT" "587"}};
$config['smtp_host'] = '{{getenv "SMTP_HOST" "tls://%n"}}:{{getenv "SMTP_PORT" "587"}}';
$config['smtp_user'] = '%u'; $config['smtp_user'] = '%u';
$config['smtp_pass'] = '%p'; $config['smtp_pass'] = '%p';
/*$config['smtp_conn_options'] = array( /*$config['smtp_conn_options'] = array(
@ -51,3 +52,4 @@ $config['oauth_scope'] = 'email profile openid';
$config['oauth_auth_parameters'] = []; $config['oauth_auth_parameters'] = [];
$config['oauth_identity_fields'] = ['preferred_username']; $config['oauth_identity_fields'] = ['preferred_username'];
$config['oauth_login_redirect'] = true; $config['oauth_login_redirect'] = true;
$config['managesieve_host'] = '{{getenv "MANAGESIEVE_HOST"}}';

View File

@ -22,6 +22,7 @@ http {
{{range $domain := split (getenv "DOMAINS") ";"}} {{range $domain := split (getenv "DOMAINS") ";"}}
server { server {
listen [::]:8080;
listen 8080; listen 8080;
server_name {{ $domain }}; server_name {{ $domain }};