UNMAINTAINED

This commit is contained in:
hoellen committed 2018-01-22 22:30:12 +01:00
1 parent 792ab407e1
commit afd3d476fd
49 files changed
-192

No files matched your search

+32
View File
@@ -0,0 +1,32 @@
FROM alpine:3.6
ARG VERSION=6.2
ENV UID=991 GID=991
WORKDIR /libresonic
RUN echo "@community https://nl.alpinelinux.org/alpine/v3.6/community" >> /etc/apk/repositories \
&& apk -U upgrade && apk add \
ffmpeg \
su-exec \
libressl \
ca-certificates \
openjdk8-jre@community \
tini \
&& wget -q https://github.com/Libresonic/libresonic/releases/download/v${VERSION}/libresonic-v${VERSION}.war -O libresonic.war \
&& rm -f /var/cache/apk/*
COPY run.sh /usr/local/bin/run.sh
RUN chmod +x /usr/local/bin/run.sh
EXPOSE 4040
VOLUME /data /musics /playlists /podcasts
LABEL description="Open source media streamer" \
libresonic="Libresonic v$VERSION" \
maintainer="Wonderfall <wonderfall@targaryen.house>"
CMD ["run.sh"]
+42
View File
@@ -0,0 +1,42 @@
## wonderfall/libresonic
![](https://img.targaryen.house/wMkrBCxj/Fv8JINdd.png)
#### What is Libresonic?
Libresonic is an open-source web-based media streamer and jukebox. Supports MP3, OGG, AAC and other streamable audio and video formats. Indeed, this build comes with **transcoding abilities**. More info here : https://libresonic.github.io/
#### Build-time variables
- **VERSION** : version of libresonic
#### Environment variables
- **GID** : subsonic group id.
- **UID** : subsonic user id.
- **HTTPS_PORT** : set if you access Libresonic through HTTPS *(default : 0 = disabled)*
#### Volumes
- **/musics** : your music files
- **/data** : subsonic data
#### Port
- 4040
#### Reverse proxy
https://github.com/Wonderfall/dockerfiles/tree/master/reverse
https://github.com/hardware/mailserver/wiki/Reverse-proxy-configuration
Libresonic does not support SSL/TLS by itself. If you want to use Libresonic through https, this is what I'm using :
```
location / {
proxy_pass http://libresonic:4040;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $http_host;
proxy_max_temp_file_size 0;
proxy_redirect http:// https://;
}
```
+22
View File
@@ -0,0 +1,22 @@
#!/bin/sh
mkdir -p /data/transcode
ln -s /usr/bin/ffmpeg /data/transcode/ffmpeg
ln -s /usr/bin/lame /data/transcode/lame
chown -R $UID:$GID /data /playlists /libresonic
exec su-exec $UID:$GID tini -- \
java -Xmx256m \
-Dserver.host=0.0.0.0 \
-Dserver.port=4040 \
-Dserver.contextPath=/ \
-Dlibresonic.home=/data \
-Dlibresonic.host=0.0.0.0 \
-Dlibresonic.port=4040 \
-Dlibresonic.contextPath=/ \
-Dlibresonic.defaultMusicFolder=/musics \
-Dlibresonic.defaultPodcastFolder=/podcasts \
-Dlibresonic.defaultPlaylistFolder=/playlists \
-Djava.awt.headless=true \
-jar libresonic.war
+58
View File
@@ -0,0 +1,58 @@
FROM alpine:edge
ARG LYCHEE_VERSION=3.1.6
ENV UID=991 GID=991
RUN echo "@testing https://nl.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories \
&& BUILD_DEPS=" \
imagemagick-dev \
tar \
libressl \
ca-certificates \
build-base \
autoconf \
pcre-dev \
libtool" \
&& apk -U upgrade && apk add \
${BUILD_DEPS} \
nginx \
php7.1-mbstring@testing \
php7.1-fpm@testing \
php7.1-exif@testing \
php7.1-gd@testing \
php7.1-json@testing \
php7.1-mysqli@testing \
php7.1-zip@testing \
php7.1-session@testing \
php7.1-pear@testing \
php7.1-dev@testing \
s6 \
su-exec \
imagemagick \
&& pecl install imagick \
&& echo "extension=imagick.so" > /etc/php7.1/conf.d/imagick.ini \
&& sed -i -e "s/max_execution_time = 30/max_execution_time = 200/g" \
-e "s/post_max_size = 8M/post_max_size = 100M/g" \
-e "s/upload_max_filesize = 2M/upload_max_filesize = 20M/g" \
-e "s/memory_limit = 256M/memory_limit = 512M/g" \
/etc/php7.1/php.ini \
&& mkdir /lychee && cd /lychee \
&& wget -qO- https://github.com/electerious/Lychee/archive/v${LYCHEE_VERSION}.tar.gz | tar xz --strip 1 \
&& apk del ${BUILD_DEPS} php7.1-pear php7.1-dev \
&& rm -rf /var/cache/apk/* /tmp/*
COPY nginx.conf /etc/nginx/nginx.conf
COPY php-fpm.conf /etc/php7.1/php-fpm.conf
COPY s6.d /etc/s6.d
COPY run.sh /usr/local/bin/run.sh
RUN chmod +x /usr/local/bin/run.sh /etc/s6.d/*/* /etc/s6.d/.s6-svscan/*
VOLUME /lychee/uploads /lychee/data
EXPOSE 8888
LABEL maintainer="Wonderfall <wonderfall@targaryen.house>"
CMD ["run.sh"]
+26
View File
@@ -0,0 +1,26 @@
## wonderfall/lychee
![](http://lychee.electerious.com/assets/images/showcase.jpg)
#### What is this?
Lychee is a free photo-management tool, which runs on your server or web-space. Installing is a matter of seconds. Upload, manage and share photos like from a native application. Lychee comes with everything you need and all your photos are stored securely.
#### Features
- Based on Alpine Linux.
- nginx + PHP7.
- Active Imagemagick + pecl ext.
#### Build-time variables
- **LYCHEE_VERSION** : version of Lychee.
- **IMAGICK_EXT_VERSION** : version of imagick pecl extension.
#### Environment variables
- **UID** : lychee user id *(default : 991)*.
- **GID** : lychee group id *(default : 991)*.
#### Volumes
- **/lychee/uploads** : uploads.
- **/lychee/data** : data files.
#### Ports
- **8888** [(reverse proxy!)](https://github.com/hardware/mailserver/wiki/Reverse-proxy-configuration)
+88
View File
@@ -0,0 +1,88 @@
worker_processes auto;
pid /tmp/nginx.pid;
daemon off;
events {
worker_connections 1024;
use epoll;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log off;
error_log /tmp/ngx_error.log error;
sendfile on;
keepalive_timeout 15;
keepalive_disable msie6;
keepalive_requests 100;
tcp_nopush on;
tcp_nodelay on;
server_tokens off;
fastcgi_temp_path /tmp/fastcgi 1 2;
client_body_temp_path /tmp/client_body 1 2;
proxy_temp_path /tmp/proxy 1 2;
uwsgi_temp_path /tmp/uwsgi 1 2;
scgi_temp_path /tmp/scgi 1 2;
gzip on;
gzip_comp_level 5;
gzip_min_length 512;
gzip_buffers 4 8k;
gzip_proxied any;
gzip_vary on;
gzip_disable "msie6";
gzip_types
text/css
text/javascript
text/xml
text/plain
text/x-component
application/javascript
application/x-javascript
application/json
application/xml
application/rss+xml
application/vnd.ms-fontobject
font/truetype
font/opentype
image/svg+xml;
server {
listen 8888;
root /lychee;
index index.php index.html;
client_max_body_size 100M;
location / {
try_files $uri $uri/ /index.html;
}
location ~* \.(?:ico|css|js|gif|jpe?g|png|ttf|woff)\$ {
access_log off;
expires 30d;
add_header Pragma public;
add_header Cache-Control "public, mustrevalidate, proxy-revalidate";
}
location ~ \.php$ {
fastcgi_split_path_info ^(.*\.php)(/.*)?$;
fastcgi_pass unix:/tmp/php-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
location ~ /\.ht {
deny all;
}
}
}
+11
View File
@@ -0,0 +1,11 @@
[global]
daemonize = no
[www]
listen = /tmp/php-fpm.sock
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chdir = /
+4
View File
@@ -0,0 +1,4 @@
#!/bin/sh
mkdir /lychee/uploads/big /lychee/uploads/import /lychee/uploads/medium /lychee/uploads/thumb
chown -R $UID:$GID /lychee /etc/nginx /etc/php7.1 /var/log /var/lib/nginx /tmp /etc/s6.d
exec su-exec $UID:$GID /bin/s6-svscan /etc/s6.d
@@ -0,0 +1,3 @@
#!/bin/sh
exit 0
+2
View File
@@ -0,0 +1,2 @@
#!/bin/sh
exec nginx
+2
View File
@@ -0,0 +1,2 @@
#!/bin/sh
exec php-fpm7.1
+93
View File
@@ -0,0 +1,93 @@
FROM alpine:3.6
ARG VERSION=master
ARG REPOSITORY=tootsuite/mastodon
ARG LIBICONV_VERSION=1.15
ENV UID=991 GID=991 \
RUN_DB_MIGRATIONS=true \
SIDEKIQ_WORKERS=5 \
RAILS_SERVE_STATIC_FILES=true \
RAILS_ENV=production \
NODE_ENV=production \
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/mastodon/bin
WORKDIR /mastodon
# Install dependencies
RUN apk -U upgrade \
&& apk add \
ca-certificates \
ffmpeg \
file \
git \
icu-libs \
imagemagick \
libidn \
libpq \
libressl \
nodejs-current-npm \
nodejs-current \
protobuf \
ruby \
ruby-bigdecimal \
ruby-io-console \
ruby-irb \
ruby-json \
s6 \
su-exec \
# Install build dependencies
&& apk add -t build-dependencies \
build-base \
icu-dev \
libffi-dev \
libidn-dev \
libtool \
postgresql-dev \
protobuf-dev \
python \
ruby-dev \
ruby-rdoc \
tar \
yarn \
# Update CA certificates
&& update-ca-certificates \
# Install GNU Libiconv
&& wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-${LIBICONV_VERSION}.tar.gz -O /tmp/libiconv-${LIBICONV_VERSION}.tar.gz \
&& mkdir /tmp/src && tar xzf /tmp/libiconv-${LIBICONV_VERSION}.tar.gz -C /tmp/src \
&& cd /tmp/src/libiconv-${LIBICONV_VERSION} \
&& ./configure --prefix=/usr/local \
&& make -j$(getconf _NPROCESSORS_ONLN) && make install && libtool --finish /usr/local/lib \
# Install Mastodon
&& cd /mastodon \
&& wget -qO- https://github.com/${REPOSITORY}/archive/${VERSION}.tar.gz | tar xz --strip 1 \
&& gem install bundler \
&& bundle install -j$(getconf _NPROCESSORS_ONLN) --deployment --clean --no-cache --without test development \
&& yarn --ignore-optional --pure-lockfile \
# Precompile Mastodon assets
&& SECRET_KEY_BASE=$(rake secret) SMTP_FROM_ADDRESS= rake assets:precompile \
&& mv public/assets /tmp/assets && mv public/packs /tmp/packs \
# Clean
&& npm -g cache clean && yarn cache clean \
&& apk del build-dependencies \
&& rm -rf /var/cache/apk/* /tmp/src
COPY rootfs /
RUN chmod +x /usr/local/bin/* /etc/s6.d/*/* /etc/s6.d/.s6-svscan/*
VOLUME /mastodon/public/system /mastodon/public/assets /mastodon/public/packs /mastodon/log
EXPOSE 3000 4000
LABEL maintainer="Wonderfall <wonderfall@targaryen.house>" \
description="A GNU Social-compatible microblogging server"
ENTRYPOINT ["/usr/local/bin/run"]
CMD ["/bin/s6-svscan", "/etc/s6.d"]
+93
View File
@@ -0,0 +1,93 @@
FROM alpine:3.6
ARG VERSION=v1.6.0
ARG REPOSITORY=tootsuite/mastodon
ARG LIBICONV_VERSION=1.15
ENV UID=991 GID=991 \
RUN_DB_MIGRATIONS=true \
SIDEKIQ_WORKERS=5 \
RAILS_SERVE_STATIC_FILES=true \
RAILS_ENV=production \
NODE_ENV=production \
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/mastodon/bin
WORKDIR /mastodon
# Install dependencies
RUN apk -U upgrade \
&& apk add \
ca-certificates \
ffmpeg \
file \
git \
icu-libs \
imagemagick \
libidn \
libpq \
libressl \
nodejs-current-npm \
nodejs-current \
protobuf \
ruby \
ruby-bigdecimal \
ruby-io-console \
ruby-irb \
ruby-json \
s6 \
su-exec \
# Install build dependencies
&& apk add -t build-dependencies \
build-base \
icu-dev \
libffi-dev \
libidn-dev \
libtool \
postgresql-dev \
protobuf-dev \
python \
ruby-dev \
ruby-rdoc \
tar \
yarn \
# Update CA certificates
&& update-ca-certificates \
# Install GNU Libiconv
&& wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-${LIBICONV_VERSION}.tar.gz -O /tmp/libiconv-${LIBICONV_VERSION}.tar.gz \
&& mkdir /tmp/src && tar xzf /tmp/libiconv-${LIBICONV_VERSION}.tar.gz -C /tmp/src \
&& cd /tmp/src/libiconv-${LIBICONV_VERSION} \
&& ./configure --prefix=/usr/local \
&& make -j$(getconf _NPROCESSORS_ONLN) && make install && libtool --finish /usr/local/lib \
# Install Mastodon
&& cd /mastodon \
&& wget -qO- https://github.com/${REPOSITORY}/archive/${VERSION}.tar.gz | tar xz --strip 1 \
&& gem install bundler \
&& bundle install -j$(getconf _NPROCESSORS_ONLN) --deployment --clean --no-cache --without test development \
&& yarn --ignore-optional --pure-lockfile \
# Precompile Mastodon assets
&& SECRET_KEY_BASE=$(rake secret) SMTP_FROM_ADDRESS= rake assets:precompile \
&& mv public/assets /tmp/assets && mv public/packs /tmp/packs \
# Clean
&& npm -g cache clean && yarn cache clean \
&& apk del build-dependencies \
&& rm -rf /var/cache/apk/* /tmp/src
COPY rootfs /
RUN chmod +x /usr/local/bin/* /etc/s6.d/*/* /etc/s6.d/.s6-svscan/*
VOLUME /mastodon/public/system /mastodon/public/assets /mastodon/public/packs /mastodon/log
EXPOSE 3000 4000
LABEL maintainer="Wonderfall <wonderfall@targaryen.house>" \
description="A GNU Social-compatible microblogging server"
ENTRYPOINT ["/usr/local/bin/run"]
CMD ["/bin/s6-svscan", "/etc/s6.d"]
@@ -0,0 +1,96 @@
FROM alpine:3.6
ARG VERSION=v1.6.0
ARG REPOSITORY=tootsuite/mastodon
ARG LIBICONV_VERSION=1.15
ENV UID=991 GID=991 \
RUN_DB_MIGRATIONS=true \
SIDEKIQ_WORKERS=5 \
RAILS_SERVE_STATIC_FILES=true \
RAILS_ENV=production \
NODE_ENV=production \
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/mastodon/bin
WORKDIR /mastodon
COPY targaryen /tmp/targaryen
# Install dependencies
RUN apk -U upgrade \
&& apk add \
ca-certificates \
ffmpeg \
file \
git \
icu-libs \
imagemagick \
libidn \
libpq \
libressl \
nodejs-current-npm \
nodejs-current \
protobuf \
ruby \
ruby-bigdecimal \
ruby-io-console \
ruby-irb \
ruby-json \
s6 \
su-exec \
# Install build dependencies
&& apk add -t build-dependencies \
build-base \
icu-dev \
libffi-dev \
libidn-dev \
libtool \
postgresql-dev \
protobuf-dev \
python \
ruby-dev \
ruby-rdoc \
tar \
yarn \
# Update CA certificates
&& update-ca-certificates \
# Install GNU Libiconv
&& wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-${LIBICONV_VERSION}.tar.gz -O /tmp/libiconv-${LIBICONV_VERSION}.tar.gz \
&& mkdir /tmp/src && tar xzf /tmp/libiconv-${LIBICONV_VERSION}.tar.gz -C /tmp/src \
&& cd /tmp/src/libiconv-${LIBICONV_VERSION} \
&& ./configure --prefix=/usr/local \
&& make -j$(getconf _NPROCESSORS_ONLN) && make install && libtool --finish /usr/local/lib \
# Install Mastodon
&& cd /mastodon \
&& wget -qO- https://github.com/${REPOSITORY}/archive/${VERSION}.tar.gz | tar xz --strip 1 \
&& cp -R /tmp/targaryen/* . && chmod +x targaryen.sh && ./targaryen.sh \
&& gem install bundler \
&& bundle install -j$(getconf _NPROCESSORS_ONLN) --deployment --clean --no-cache --without test development \
&& yarn --ignore-optional --pure-lockfile \
# Precompile Mastodon assets
&& SECRET_KEY_BASE=$(rake secret) SMTP_FROM_ADDRESS= rake assets:precompile \
&& mv public/assets /tmp/assets && mv public/packs /tmp/packs \
# Clean
&& npm -g cache clean --force && yarn cache clean \
&& apk del build-dependencies \
&& rm -rf /var/cache/apk/* /tmp/src
COPY rootfs /
RUN chmod +x /usr/local/bin/* /etc/s6.d/*/* /etc/s6.d/.s6-svscan/*
VOLUME /mastodon/public/system /mastodon/public/assets /mastodon/public/packs /mastodon/log
EXPOSE 3000 4000
LABEL maintainer="Wonderfall <wonderfall@targaryen.house>" \
description="A GNU Social-compatible microblogging server"
ENTRYPOINT ["/usr/local/bin/run"]
CMD ["/bin/s6-svscan", "/etc/s6.d"]
+65
View File
@@ -0,0 +1,65 @@
## wonderfall/mastodon
![Mastodon](https://github.com/tootsuite/mastodon/blob/master/app/javascript/images/mastodon-getting-started.png?raw=true)
A GNU Social-compatible microblogging server : https://github.com/tootsuite/mastodon
#### Why this image?
This image is not the official one. The main difference you can notice is that all processes (web, streaming, sidekiq) are running in a single container, thanks to s6 (a supervision suite). Therefore it's easier to deploy, but not recommended for scaling on more than one machine.
#### Features
- Based on Alpine Linux 3.6.
- As lightweight as possible.
- All-in-one container (s6).
- Assets are precompiled.
- Database migrations can be run at startup.
- No root processes.
#### Docker Hub tags
- **master** : latest code for adventurers (builds daily on Docker Hub)
- **stable** : latest stable version (builds weekly on Docker Hub)
- **targaryen** : Targaryen-themed stable version (builds weekly on Docker Hub)
#### Build-time variables
- **VERSION** : version of Mastodon, can be `v1.4.1` or `master`. *(default : master)*
- **REPOSITORY** : location of the code *(default : tootsuite/mastodon)*
#### Environment variables you should change
- **UID** : mastodon user id *(default : 991)*
- **GID** : mastodon group id *(default : 991)*
- **RUN_DB_MIGRATIONS** : run `rake db:migrate` at startup *(default : true)*
- **SIDEKIQ_WORKERS** : number of Sidekiq workers *(default : 5)*
- Other environment variables : https://github.com/tootsuite/mastodon/blob/master/.env.production.sample
#### Volumes
- **/mastodon/public/system** : shit like media attachments, avatars, etc.
- **/mastodon/public/assets** : Mastodon assets
- **/mastodon/public/packs** : Mastodon assets
- **/mastodon/log** : Mastodon logfiles (mount if you prefer to)
#### Ports
- **3000** : Mastodon web
- **4000** : Mastodon streaming
#### docker-compose sample
```
mastodon:
image: wonderfall/mastodon:stable
restart: always
container_name: mastodon
env_file: /home/docker/mastodon/.env.production
environment:
- WEB_CONCURRENCY=16
- MAX_THREADS=20
- SIDEKIQ_WORKERS=25
- RUN_DB_MIGRATIONS=true
links:
- mastodon-pgb
- mastodon-redis
volumes:
- /home/docker/mastodon/public/system:/mastodon/public/system
- /home/docker/mastodon/public/assets:/mastodon/public/assets
- /home/docker/mastodon/public/packs:/mastodon/public/packs
```
@@ -0,0 +1,2 @@
#!/bin/sh
exit 0
@@ -0,0 +1,3 @@
#!/bin/sh
cd /mastodon
exec bundle exec sidekiq -c $SIDEKIQ_WORKERS -q default -q push -q pull -q mailers > ./log/sidekiq.log 2>&1
@@ -0,0 +1,3 @@
#!/bin/sh
cd /mastodon
exec npm run start > ./log/streaming.log 2>&1
@@ -0,0 +1,3 @@
#!/bin/sh
cd /mastodon
exec bundle exec puma -C config/puma.rb > ./log/web.log 2>&1
@@ -0,0 +1,56 @@
#!/bin/sh
### 1. Adds local user (UID and GID are provided from environment variables).
### 2. Moves precompiled assets into them.
### 3. Updates permissions, except for ./public/system (should be chown on previous installations).
### NOTE : this can take a long time if overlay2 is the storage-driver (issue #3194).
### 4. If $RUN_DB_MIGRATIONS is set to true, runs the database migrations task.
### 5. Executes the command as that user.
echo "
---------------------------------------------
_____ _ _
| |___ ___| |_ ___ _| |___ ___
| | | | .'|_ -| _| . | . | . | |
|_|_|_|__,|___|_| |___|___|___|_|_|
A GNU Social-compatible microblogging server
https://github.com/tootsuite/mastodon
17j2g7vpgHhLuXhN4bueZFCvdxxieyRVWd
---------------------------------------------
UID/GID settings
---------------------------------------------
User ID : ${UID}
Group ID : ${GID}
---------------------------------------------
Logs location
---------------------------------------------
Sidekiq : /mastodon/log/sidekiq.log
Streaming : /mastodon/log/streaming.log
Web : /mastodon/log/web.log
---------------------------------------------
"
echo "Creating mastodon user..."
addgroup -g ${GID} mastodon &>/dev/null
adduser -h /mastodon -s /bin/sh -D -G mastodon -u ${UID} mastodon &>/dev/null
echo "Moving assets to volumes..."
cp -r /tmp/assets/* public/assets &>/dev/null
cp -r /tmp/packs/* public/packs &>/dev/null
echo "Updating permissions, this can take a while..."
find /mastodon -path /mastodon/public/system -prune -o -not -user mastodon -not -group mastodon -print0 | xargs -0 chown -f mastodon:mastodon
chown -R mastodon:mastodon /etc/s6.d
if [ "$RUN_DB_MIGRATIONS" == "true" ]; then
echo "Running database migrations task..."
su-exec mastodon:mastodon rake db:migrate
fi
echo "Executing process(es)..."
if [ '$@' == '' ]; then
exec su-exec mastodon:mastodon /bin/s6-svscan /etc/s6.d
else
exec su-exec mastodon:mastodon "$@"
fi
Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="379.9954764015122 390.0165425701057 517.9909528030244 517.9909528030244" width="517.9909528030244" height="517.9909528030244"><path d=" M 379.9954764015122 649.0120189716179 C 379.9954764015122 506.06852543356774 496.0474592649741 390.01654257010574 638.9909528030244 390.0165425701057 C 781.9344463410745 390.0165425701057 897.9864292045365 506.06852543356763 897.9864292045365 649.0120189716177 C 897.9864292045365 791.9555125096679 781.9344463410746 908.00749537313 638.9909528030245 908.00749537313 C 496.0474592649743 908.00749537313 379.9954764015122 791.9555125096681 379.9954764015122 649.0120189716179 Z " fill="rgb(34,34,34)"/><path d=" M 533.14 432 L 533.72 432.6 C 533.72 432.6 536.3199999999999 432.62 538.22 433.08 C 540.12 433.55 542.92 434.71 544.12 434.71 C 545.3199999999999 434.71 547.96 433.81 548.6 432.83 C 549.27 431.81 549.38 431.55 549.38 431.55 C 549.38 431.55 548.38 431.55 545.84 431.65 C 543.28 431.7 542.54 431.58 540.58 431.09 C 538.6 430.59 536.71 430.09 535.26 430.45 C 533.8100000000001 430.79999999999995 533.14 432.02 533.14 432.02 M 564.64 445.34 C 564.64 445.34 566.99 448.71 568.6800000000001 450.03999999999996 C 570.36 451.40999999999997 572.9200000000001 452.79999999999995 574.31 452.79999999999995 C 575.75 452.79999999999995 577.64 452.2 577.64 452.2 C 577.64 452.2 575.28 451.2 574.06 449.37 C 572.84 447.57 570.63 444.35 568.83 444.27 C 567 444.2 564.65 445.34 564.65 445.34 M 552.25 437.58 C 552.25 437.58 554.55 438.67999999999995 555.87 439.58 C 557.1700000000001 440.51 558.52 441.98 560.37 441.98 C 562.24 441.98 566.0699999999999 439.48 566.0699999999999 439.48 C 566.0699999999999 439.48 565.3199999999999 439.64 563.75 438.90999999999997 C 562.21 438.18 559.88 435.71 557.95 435.45 C 555.95 435.15 553.61 435.55 552.8199999999999 436.2 C 552.05 436.83 552.25 437.56 552.25 437.56 M 574.8299999999999 458.06 C 574.8299999999999 458.06 575.91 459.15999999999997 577.13 462.65999999999997 C 578.36 466.18 579.37 468.59000000000003 581.8299999999999 470.15999999999997 C 584.31 471.73 586.55 471.86 586.55 471.86 C 586.55 471.86 585.3 471.36 585.1 469.65999999999997 C 584.86 467.98 584.92 464.46 583.6 462.56 C 582.22 460.65999999999997 581.55 459.86 579.02 458.92 C 576.52 457.96000000000004 574.8199999999999 458.07 574.8199999999999 458.07 M 581.66 477.6 C 581.66 477.6 582.56 479.08000000000004 582.66 481.35 C 582.79 483.59000000000003 582.79 488.47 583.84 490.47 C 584.88 492.51 589.44 495.09000000000003 589.44 495.09000000000003 C 589.44 495.09000000000003 588.34 493.09000000000003 588.52 490.41 C 588.69 487.76 590.72 484.97 587.47 481.41 C 584.24 477.79 583.31 477.85 582.85 477.71000000000004 C 582.38 477.53000000000003 581.65 477.59000000000003 581.65 477.59000000000003 M 583.15 497.29 C 583.4 497.41 587.3199999999999 499.89 588.4300000000001 501.51 C 589.5699999999999 503.13 589.73 506.59000000000003 589.5699999999999 508.13 C 589.4300000000001 509.63 588.41 511.65000000000003 588.64 512.53 C 588.88 513.4300000000001 589.38 514.61 589.38 514.61 C 589.38 514.61 586.3 513.33 584.96 510.75 C 583.66 508.13 583.51 502.03000000000003 583.28 500.31000000000006 C 583.01 498.63 583.16 497.29 583.16 497.29 M 584.76 536.79 C 584.76 536.79 580.43 532.54 580.0799999999999 528.73 C 579.73 524.9300000000001 581.45 519.13 581.45 519.13 C 581.45 519.13 585.95 523.03 585.95 527.11 C 585.95 531.1800000000001 584.77 536.78 584.77 536.78 M 578.99 537.38 C 578.99 537.38 581.99 539.04 582.9399999999999 542.0799999999999 C 583.91 545.18 583.0699999999999 548.66 582.6099999999999 550.38 C 582.14 552.12 582.1099999999999 552.84 582.31 553.28 C 582.49 553.71 582.8699999999999 553.95 582.8699999999999 553.95 C 582.8699999999999 553.95 581.8199999999999 554.8199999999999 579.9699999999999 552.03 C 578.0699999999999 549.23 577.17 547.03 577.49 544.3 C 577.8399999999999 541.57 578.99 537.38 578.99 537.38 M 576.9699999999999 556.04 C 576.9699999999999 556.04 580.25 557.29 580.9499999999999 560.24 C 581.6499999999999 563.19 580.9499999999999 566.59 581.25 568.94 C 581.55 571.34 581.75 572.98 582.0699999999999 573.48 L 582.77 574.52 C 582.77 574.52 579.01 572.0799999999999 578.52 570.89 C 577.9999999999999 569.71 577.1199999999999 568.75 577.1199999999999 564.86 C 577.1199999999999 560.99 576.9799999999999 556.06 576.9799999999999 556.06 M 580.3499999999999 579.16 C 580.3499999999999 579.16 583.55 580.3399999999999 584.9699999999999 582.0899999999999 C 586.42 583.86 586.8699999999999 585.52 587.53 587.06 C 588.2299999999999 588.56 588.8299999999999 589.53 589.68 590.16 C 590.48 590.8 590.9 591.01 590.9 591.01 C 590.9 591.01 588.5 591.1099999999999 586.8599999999999 590.66 C 585.2099999999999 590.26 583.06 586.46 582.5999999999999 585.63 C 582.13 584.8499999999999 580.3299999999999 580.63 580.1999999999999 580 C 580 579.4 579.92 579.02 579.9Line truncated

After

Width:  |  Height:  |  Size: 306 KiB

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!-- Generator: Gravit.io --><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="isolation:isolate" viewBox="379.9954764015122 390.0165425701057 517.9909528030244 517.9909528030244" width="517.9909528030244" height="517.9909528030244"><path d=" M 379.9954764015122 649.0120189716179 C 379.9954764015122 506.06852543356774 496.0474592649741 390.01654257010574 638.9909528030244 390.0165425701057 C 781.9344463410745 390.0165425701057 897.9864292045365 506.06852543356763 897.9864292045365 649.0120189716177 C 897.9864292045365 791.9555125096679 781.9344463410746 908.00749537313 638.9909528030245 908.00749537313 C 496.0474592649743 908.00749537313 379.9954764015122 791.9555125096681 379.9954764015122 649.0120189716179 Z " fill="rgb(34,34,34)"/><path d=" M 533.14 432 L 533.72 432.6 C 533.72 432.6 536.3199999999999 432.62 538.22 433.08 C 540.12 433.55 542.92 434.71 544.12 434.71 C 545.3199999999999 434.71 547.96 433.81 548.6 432.83 C 549.27 431.81 549.38 431.55 549.38 431.55 C 549.38 431.55 548.38 431.55 545.84 431.65 C 543.28 431.7 542.54 431.58 540.58 431.09 C 538.6 430.59 536.71 430.09 535.26 430.45 C 533.8100000000001 430.79999999999995 533.14 432.02 533.14 432.02 M 564.64 445.34 C 564.64 445.34 566.99 448.71 568.6800000000001 450.03999999999996 C 570.36 451.40999999999997 572.9200000000001 452.79999999999995 574.31 452.79999999999995 C 575.75 452.79999999999995 577.64 452.2 577.64 452.2 C 577.64 452.2 575.28 451.2 574.06 449.37 C 572.84 447.57 570.63 444.35 568.83 444.27 C 567 444.2 564.65 445.34 564.65 445.34 M 552.25 437.58 C 552.25 437.58 554.55 438.67999999999995 555.87 439.58 C 557.1700000000001 440.51 558.52 441.98 560.37 441.98 C 562.24 441.98 566.0699999999999 439.48 566.0699999999999 439.48 C 566.0699999999999 439.48 565.3199999999999 439.64 563.75 438.90999999999997 C 562.21 438.18 559.88 435.71 557.95 435.45 C 555.95 435.15 553.61 435.55 552.8199999999999 436.2 C 552.05 436.83 552.25 437.56 552.25 437.56 M 574.8299999999999 458.06 C 574.8299999999999 458.06 575.91 459.15999999999997 577.13 462.65999999999997 C 578.36 466.18 579.37 468.59000000000003 581.8299999999999 470.15999999999997 C 584.31 471.73 586.55 471.86 586.55 471.86 C 586.55 471.86 585.3 471.36 585.1 469.65999999999997 C 584.86 467.98 584.92 464.46 583.6 462.56 C 582.22 460.65999999999997 581.55 459.86 579.02 458.92 C 576.52 457.96000000000004 574.8199999999999 458.07 574.8199999999999 458.07 M 581.66 477.6 C 581.66 477.6 582.56 479.08000000000004 582.66 481.35 C 582.79 483.59000000000003 582.79 488.47 583.84 490.47 C 584.88 492.51 589.44 495.09000000000003 589.44 495.09000000000003 C 589.44 495.09000000000003 588.34 493.09000000000003 588.52 490.41 C 588.69 487.76 590.72 484.97 587.47 481.41 C 584.24 477.79 583.31 477.85 582.85 477.71000000000004 C 582.38 477.53000000000003 581.65 477.59000000000003 581.65 477.59000000000003 M 583.15 497.29 C 583.4 497.41 587.3199999999999 499.89 588.4300000000001 501.51 C 589.5699999999999 503.13 589.73 506.59000000000003 589.5699999999999 508.13 C 589.4300000000001 509.63 588.41 511.65000000000003 588.64 512.53 C 588.88 513.4300000000001 589.38 514.61 589.38 514.61 C 589.38 514.61 586.3 513.33 584.96 510.75 C 583.66 508.13 583.51 502.03000000000003 583.28 500.31000000000006 C 583.01 498.63 583.16 497.29 583.16 497.29 M 584.76 536.79 C 584.76 536.79 580.43 532.54 580.0799999999999 528.73 C 579.73 524.9300000000001 581.45 519.13 581.45 519.13 C 581.45 519.13 585.95 523.03 585.95 527.11 C 585.95 531.1800000000001 584.77 536.78 584.77 536.78 M 578.99 537.38 C 578.99 537.38 581.99 539.04 582.9399999999999 542.0799999999999 C 583.91 545.18 583.0699999999999 548.66 582.6099999999999 550.38 C 582.14 552.12 582.1099999999999 552.84 582.31 553.28 C 582.49 553.71 582.8699999999999 553.95 582.8699999999999 553.95 C 582.8699999999999 553.95 581.8199999999999 554.8199999999999 579.9699999999999 552.03 C 578.0699999999999 549.23 577.17 547.03 577.49 544.3 C 577.8399999999999 541.57 578.99 537.38 578.99 537.38 M 576.9699999999999 556.04 C 576.9699999999999 556.04 580.25 557.29 580.9499999999999 560.24 C 581.6499999999999 563.19 580.9499999999999 566.59 581.25 568.94 C 581.55 571.34 581.75 572.98 582.0699999999999 573.48 L 582.77 574.52 C 582.77 574.52 579.01 572.0799999999999 578.52 570.89 C 577.9999999999999 569.71 577.1199999999999 568.75 577.1199999999999 564.86 C 577.1199999999999 560.99 576.9799999999999 556.06 576.9799999999999 556.06 M 580.3499999999999 579.16 C 580.3499999999999 579.16 583.55 580.3399999999999 584.9699999999999 582.0899999999999 C 586.42 583.86 586.8699999999999 585.52 587.53 587.06 C 588.2299999999999 588.56 588.8299999999999 589.53 589.68 590.16 C 590.48 590.8 590.9 591.01 590.9 591.01 C 590.9 591.01 588.5 591.1099999999999 586.8599999999999 590.66 C 585.2099999999999 590.26 583.06 586.46 582.5999999999999 585.63 C 582.13 584.8499999999999 580.3299999999999 580.63 580.1999999999999 580 C 580 579.4 579.92 579.02 579.9Line truncated

After

Width:  |  Height:  |  Size: 306 KiB

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 714 176" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:1.41421;">
<path d="M160.555,105.431C158.142,117.838 138.957,131.414 116.921,134.045C105.43,135.418 94.117,136.676 82.054,136.124C62.324,135.22 46.756,131.414 46.756,131.414C46.756,133.335 46.875,135.164 47.111,136.874C49.676,156.344 66.419,157.511 82.277,158.055C98.284,158.603 112.535,154.108 112.535,154.108L113.194,168.58C113.194,168.58 101.997,174.591 82.054,175.696C71.055,176.301 57.4,175.42 41.494,171.211C6.999,162.08 1.066,125.31 0.159,88C-0.119,76.923 0.052,66.476 0.052,57.741C0.052,19.589 25.049,8.406 25.049,8.406C37.652,2.618 59.28,0.184 81.764,0L82.316,0C104.8,0.184 126.441,2.618 139.045,8.406C139.045,8.406 164.041,19.589 164.041,57.741C164.041,57.741 164.354,85.889 160.555,105.431" style="fill:rgb(202,0,0);fill-rule:nonzero;"/>
<path d="M34.658,48.494C34.658,42.94 39.16,38.439 44.713,38.439C50.266,38.439 54.768,42.94 54.768,48.494C54.768,54.047 50.266,58.549 44.713,58.549C39.16,58.549 34.658,54.047 34.658,48.494M178.865,60.7L178.865,106.895L160.564,106.895L160.564,62.057C160.564,52.605 156.586,47.809 148.631,47.809C139.837,47.809 135.429,53.5 135.429,64.752L135.429,89.293L117.235,89.293L117.235,64.752C117.235,53.5 112.826,47.809 104.032,47.809C96.077,47.809 92.1,52.605 92.1,62.057L92.1,106.895L73.799,106.895L73.799,60.7C73.799,51.259 76.202,43.756 81.031,38.205C86.011,32.655 92.532,29.81 100.626,29.81C109.992,29.81 117.085,33.409 121.772,40.609L126.332,48.251L130.891,40.609C135.58,33.409 142.671,29.81 152.039,29.81C160.132,29.81 166.652,32.655 171.632,38.205C176.461,43.756 178.865,51.259 178.865,60.7M241.913,83.664C245.689,79.674 247.508,74.649 247.508,68.589C247.508,62.529 245.689,57.504 241.913,53.661C238.277,49.67 233.659,47.75 228.064,47.75C222.468,47.75 217.852,49.67 214.215,53.661C210.578,57.504 208.759,62.529 208.759,68.589C208.759,74.649 210.578,79.674 214.215,83.664C217.852,87.506 222.468,89.427 228.064,89.427C233.659,89.427 238.277,87.506 241.913,83.664M247.508,31.639L265.554,31.639L265.554,105.539L247.508,105.539L247.508,96.817C242.053,104.06 234.498,107.607 224.707,107.607C215.334,107.607 207.36,103.912 200.645,96.374C194.072,88.836 190.714,79.525 190.714,68.589C190.714,57.8 194.072,48.487 200.645,40.95C207.36,33.412 215.334,29.57 224.707,29.57C234.498,29.57 242.053,33.117 247.508,40.359L247.508,31.639L247.508,31.639ZM326.27,67.259C331.585,71.249 334.243,76.865 334.103,83.959C334.103,91.497 331.445,97.409 325.99,101.547C320.533,105.539 313.96,107.607 305.986,107.607C291.577,107.607 281.785,101.695 276.608,90.019L292.277,80.709C294.375,87.062 298.991,90.315 305.986,90.315C312.42,90.315 315.638,88.245 315.638,83.959C315.638,80.855 311.441,78.047 302.908,75.831C299.69,74.944 297.032,74.057 294.935,73.317C291.997,72.136 289.48,70.805 287.381,69.18C282.205,65.19 279.547,59.867 279.547,53.07C279.547,45.827 282.065,40.064 287.101,35.925C292.277,31.639 298.571,29.57 306.126,29.57C318.156,29.57 326.97,34.742 332.703,45.236L317.317,54.104C315.078,49.08 311.302,46.567 306.126,46.567C300.67,46.567 298.012,48.636 298.012,52.626C298.012,55.73 302.208,58.537 310.742,60.755C317.317,62.232 322.492,64.45 326.27,67.259M383.627,49.966L367.819,49.966L367.819,80.709C367.819,84.404 369.219,86.62 371.877,87.654C373.835,88.394 377.752,88.541 383.627,88.245L383.627,105.539C371.458,107.016 362.644,105.834 357.468,101.842C352.293,98 349.774,90.906 349.774,80.709L349.774,49.966L337.604,49.966L337.604,31.639L349.774,31.639L349.774,16.711L367.819,10.947L367.819,31.639L383.627,31.639L383.627,49.966ZM441.125,83.221C444.762,79.377 446.58,74.499 446.58,68.588C446.58,62.677 444.762,57.799 441.125,53.957C437.487,50.113 433.011,48.193 427.555,48.193C422.1,48.193 417.624,50.113 413.986,53.957C410.489,57.947 408.67,62.824 408.67,68.588C408.67,74.353 410.489,79.23 413.986,83.22C417.624,87.063 422.1,88.984 427.555,88.984C433.011,88.984 437.487,87.063 441.125,83.22M401.256,96.374C394.122,88.837 390.625,79.673 390.625,68.588C390.625,57.65 394.122,48.488 401.256,40.95C408.39,33.413 417.204,29.57 427.555,29.57C437.907,29.57 446.72,33.413 453.855,40.95C460.99,48.488 464.626,57.799 464.626,68.588C464.626,79.525 460.99,88.837 453.855,96.374C446.72,103.913 438.047,107.607 427.555,107.607C417.064,107.607 408.39,103.913 401.256,96.374M524.921,83.664C528.559,79.674 530.376,74.649 530.376,68.589C530.376,62.529 528.559,57.504 524.921,53.661C521.285,49.67 516.668,47.75 511.073,47.75C505.476,47.75 500.86,49.67 497.084,53.661C493.448,57.504 491.628,62.529 491.628,68.589C491.628,74.649 493.448,79.674 497.084,83.664C500.86,87.506 505.616,89.427 511.073,89.427C516.668,89.427 521.285,87.506 524.921,83.664M530.376,2.079L548.423,2.079L548.423,105.539L530.376,105.539L530.376,96.817C525.061,104.06 517.506,107.607 507.715,107.607C498.343,107.607 490.23,103.912 483.515,96.374C476.94,88.836 473.583,79.525 473.583,68.589C473.583,57.8 476.94,48.487 483.515,40.95C490.23,33.412 498.343,29.57 507.715,29.57C517.506,29.57 525.061,33.117 530.376,40.359L530.376,2.079L530.376,2.079ZM611.796,83.221C615.433,79.377 617.251,74.499 617.251,68.588C617.251,62.677 615.433,57.799 611.796,53.957C608.159,50.113 603.683,48.193 598.226,48.193C592.771,48.193 588.294,50.113 584.658,53.957C581.159,57.947 579.341,62.824 579.341,68.588C579.341,74.353 581.159,79.23 584.658,83.22C588.294,87.063 592.771,88.984 598.226,88.984C603.683,88.984 608.159,87.063 611.796,83.22M571.928,96.374C564.793,88.837 561.296,79.673 561.296,68.588C561.296,57.65 564.793,48.488 571.928,40.95C579.063,33.413 587.875,29.57 598.226,29.57C608.579,29.57 617.391,33.413 624.526,40.95C631.661,48.488 635.298,57.799 635.298,68.588C635.298,79.525 631.661,88.837 624.526,96.374C617.391,103.913 608.719,107.607 598.226,107.607C587.735,107.607 579.063,103.913 571.928,96.374M713.359,60.164L713.359,105.538L695.313,105.538L695.313,62.529C695.313,57.651 6Line truncated
</svg>

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

@@ -0,0 +1,29 @@
// Commonly used web colors
$black: #000000; // Black
$white: #ffffff; // White
$success-green: #79bd9a; // Padua
$error-red: #df405a; // Cerise
$warning-red: #ff5050; // Sunset Orange
$gold-star: #ca8f04; // Dark Goldenrod
// Values from the classic Mastodon UI
$classic-base-color: #282828; // Midnight Grey
$classic-primary-color: #c89b9b; // Echo Red
$classic-secondary-color: #e8d9d9; // Pattens Red
$classic-highlight-color: #d92b2b; // Summer RedSky
// Variables for defaults in UI
$base-shadow-color: $black !default;
$base-overlay-background: $black !default;
$base-border-color: $white !default;
$simple-background-color: $white !default;
$primary-text-color: $white !default;
$valid-value-color: $success-green !default;
$error-value-color: $error-red !default;
// Tell UI to use selected colors
$ui-base-color: $classic-base-color !default; // Darkest
$ui-base-lighter-color: lighten($ui-base-color, 26%) !default; // Lighter darkest
$ui-primary-color: $classic-primary-color !default; // Lighter
$ui-secondary-color: $classic-secondary-color !default; // Lightest
$ui-highlight-color: $classic-highlight-color !default; // Vibrant
Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

@@ -0,0 +1,18 @@
#!/bin/sh
### Increase number of characters / toot
sed -i -e 's/500/800/g' \
app/javascript/mastodon/features/compose/components/compose_form.js \
app/validators/status_length_validator.rb \
storybook/stories/character_counter.story.js \
config/locales/*.yml
### Increase bio length
sed -i -e 's/160/400/g' \
app/javascript/packs/public.js \
app/models/account.rb \
app/views/settings/profiles/show.html.haml
### Dragon emoji
sed -i -e 's/1f602/1f432/g' \
app/javascript/mastodon/features/compose/components/emoji_picker_dropdown.js
+120
View File
@@ -0,0 +1,120 @@
FROM alpine:3.6
ARG RTORRENT_VER=0.9.6
ARG LIBTORRENT_VER=0.13.6
ARG MEDIAINFO_VER=0.7.99
ARG FILEBOT_VER=4.7.9
ARG CHROMAPRINT_VER=1.4.2
ARG LIBZEN_VER=0.4.37
ARG FLOOD_VER=1.0.0
ARG BUILD_CORES
ENV UID=991 GID=991 \
FLOOD_SECRET=supersecret \
CONTEXT_PATH=/ \
RTORRENT_SCGI=0 \
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
ENV FILEBOT_RENAME_METHOD="symlink" \
FILEBOT_RENAME_MOVIES="{n} ({y})" \
FILEBOT_RENAME_SERIES="{n}/Season {s.pad(2)}/{s00e00} - {t}" \
FILEBOT_RENAME_ANIMES="{n}/{e.pad(3)} - {t}" \
FILEBOT_RENAME_MUSICS="{artist}/{album}/{fn}"
RUN NB_CORES=${BUILD_CORES-`getconf _NPROCESSORS_CONF`} \
&& apk -U upgrade \
&& apk add -t build-dependencies \
build-base \
git \
libtool \
automake \
autoconf \
wget \
tar \
xz \
zlib-dev \
cppunit-dev \
libressl-dev \
ncurses-dev \
curl-dev \
binutils \
&& apk add \
ca-certificates \
curl \
ncurses \
libressl \
gzip \
zip \
zlib \
unrar \
s6 \
su-exec \
python \
nodejs \
nodejs-npm \
openjdk8-jre \
java-jna-native \
&& cd /tmp && mkdir libtorrent rtorrent \
&& cd libtorrent && wget -qO- https://github.com/rakshasa/libtorrent/archive/${LIBTORRENT_VER}.tar.gz | tar xz --strip 1 \
&& cd ../rtorrent && wget -qO- https://github.com/rakshasa/rtorrent/archive/${RTORRENT_VER}.tar.gz | tar xz --strip 1 \
&& cd /tmp \
&& git clone https://github.com/mirror/xmlrpc-c.git \
&& git clone https://github.com/Rudde/mktorrent.git \
&& git clone https://github.com/acoustid/chromaprint.git \
&& cd /tmp/mktorrent && make -j ${NB_CORES} && make install \
&& cd /tmp/xmlrpc-c/stable && ./configure && make -j ${NB_CORES} && make install \
&& cd /tmp/libtorrent && ./autogen.sh && ./configure && make -j ${NB_CORES} && make install \
&& cd /tmp/rtorrent && ./autogen.sh && ./configure --with-xmlrpc-c && make -j ${NB_CORES} && make install \
&& cd /tmp \
&& wget -q http://mediaarea.net/download/binary/mediainfo/${MEDIAINFO_VER}/MediaInfo_CLI_${MEDIAINFO_VER}_GNU_FromSource.tar.gz \
&& wget -q http://mediaarea.net/download/binary/libmediainfo0/${MEDIAINFO_VER}/MediaInfo_DLL_${MEDIAINFO_VER}_GNU_FromSource.tar.gz \
&& wget -q https://github.com/MediaArea/ZenLib/archive/v${LIBZEN_VER}.tar.gz -O libzen.tar.gz \
&& tar xzf MediaInfo_DLL_${MEDIAINFO_VER}_GNU_FromSource.tar.gz \
&& tar xzf MediaInfo_CLI_${MEDIAINFO_VER}_GNU_FromSource.tar.gz \
&& tar xzf libzen.tar.gz \
&& cd /tmp/ZenLib-${LIBZEN_VER}/Project/GNU/Library \
&& ./autogen.sh && ./configure --prefix=/usr --enable-shared --disable-static && make && make install \
&& cd /tmp/MediaInfo_DLL_GNU_FromSource && ./SO_Compile.sh \
&& cd /tmp/MediaInfo_DLL_GNU_FromSource/ZenLib/Project/GNU/Library && make install \
&& cd /tmp/MediaInfo_DLL_GNU_FromSource/MediaInfoLib/Project/GNU/Library && make install \
&& cd /tmp/MediaInfo_CLI_GNU_FromSource && ./CLI_Compile.sh \
&& cd /tmp/MediaInfo_CLI_GNU_FromSource/MediaInfo/Project/GNU/CLI && make install \
&& strip -s /usr/local/bin/rtorrent \
&& strip -s /usr/local/bin/mktorrent \
&& strip -s /usr/local/bin/mediainfo \
&& mkdir /filebot && cd /filebot \
&& wget https://github.com/acoustid/chromaprint/releases/download/v${CHROMAPRINT_VER}/chromaprint-fpcalc-${CHROMAPRINT_VER}-linux-x86_64.tar.gz \
&& tar xvf chromaprint-fpcalc-${CHROMAPRINT_VER}-linux-x86_64.tar.gz \
&& mv chromaprint-fpcalc-${CHROMAPRINT_VER}-linux-x86_64/fpcalc /usr/local/bin \
&& strip -s /usr/local/bin/fpcalc \
&& wget -q https://netcologne.dl.sourceforge.net/project/filebot/filebot/FileBot_${FILEBOT_VER}/FileBot_${FILEBOT_VER}-portable.tar.xz \
&& tar xJf FileBot_${FILEBOT_VER}-portable.tar.xz && rm FileBot_${FILEBOT_VER}-portable.tar.xz \
&& mkdir /usr/flood && cd /usr/flood && wget -qO- https://github.com/jfurrow/flood/archive/v${FLOOD_VER}.tar.gz | tar xz --strip 1 \
&& npm install --production \
&& ln -sf /usr/local/lib/libmediainfo.so.0.0.0 /filebot/lib/x86_64/libmediainfo.so \
&& ln -sf /usr/local/lib/libzen.la /filebot/lib/x86_64/libzen.so \
&& ln -sf /usr/local/bin/mediainfo /usr/bin/mediainfo \
&& apk del build-dependencies \
&& rm -rf /var/cache/apk/* /tmp/*
COPY config.js /usr/flood/
COPY s6.d /etc/s6.d
COPY run.sh /usr/bin/
COPY postdl /usr/bin/
COPY postrm /usr/bin/
COPY config.js /usr/flood/
COPY rtorrent.rc /home/torrent/.rtorrent.rc
RUN chmod +x /usr/bin/* /etc/s6.d/*/* /etc/s6.d/.s6-svscan/*
VOLUME /data /flood-db
EXPOSE 3000 49184 49184/udp
LABEL description="BitTorrent client with WebUI front-end" \
rtorrent="rTorrent BiTorrent client v$RTORRENT_VER" \
libtorrent="libtorrent v$LIBTORRENT_VER" \
filebot="Filebot v$FILEBOT_VER" \
maintainer="Wonderfall <wonderfall@targaryen.house>"
CMD ["run.sh"]
+40
View File
@@ -0,0 +1,40 @@
## wonderfall/rtorrent-flood
![](https://camo.githubusercontent.com/d8f5cb502f06e0ea1cc171550c2bed035293c1a9/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6a6f686e667572726f772e636f6d2f73686172652f666c6f6f642d73637265656e73686f742d612d303630362e706e67)
#### Main features
- Based on Alpine Linux.
- rTorrent and libtorrent are compiled from source.
- Provides by default a solid configuration.
- [Filebot](http://www.filebot.net/) is included, and creates symlinks in `/data/Media`.
- [Flood](https://github.com/jfurrow/flood), a modern web UI for rTorrent with a Node.js backend and React frontend.
#### Build-time variables
- **RTORRENT_VER** : rtorrent version
- **LIBTORRENT_VER** : libtorrent version
- **MEDIAINFO_VER** : libmediainfo version
- **FILEBOT_VER** : filebot version
- **BUILD_CORES** : number of cores used during build
#### Environment variables
- **UID** : user id (default : 991)
- **GID** : group id (defaut : 991)
- **FLOOD_SECRET** : flood secret key (defaut : mysupersecretkey) (CHANGE IT)
- **CONTEXT_PATH** : context path (base_URI) (default : /)
- **RTORRENT_SCGI** : SCGI port (default : 0 for use local socket)
- **PKG_CONFIG_PATH** : `/usr/local/lib/pkgconfig` (don't touch)
### Note
Run this container with tty mode enabled. In your `docker-compose.yml`, add `tty: true`. If you don't do this, [rtorrent will use 100% of CPU](https://github.com/Wonderfall/dockerfiles/issues/156).
#### Ports
- **49184** (bind it).
- **3000** [(reverse proxy!)](https://github.com/hardware/mailserver/wiki/Reverse-proxy-configuration)
#### Tags
- **latest** : latest versions of rTorrent/libtorrent.
- Use **$RTORRENT_VER-$LIBTORRENT_VER** to get specific versions of rTorrent/libtorrent.
#### Volumes
- **/data** : your downloaded torrents, session files, symlinks...
- **/flood-db** : Flood databases.
+17
View File
@@ -0,0 +1,17 @@
const CONFIG = {
baseURI: '<CONTEXT_PATH>',
dbCleanInterval: 1000 * 60 * 60,
dbPath: '/flood-db/',
floodServerPort: 3000,
maxHistoryStates: 30,
pollInterval: 1000 * 5,
secret: '<FLOOD_SECRET>',
scgi: {
host: 'localhost',
port: 5000,
socket: true,
socketPath: '/tmp/rtorrent.sock'
}
};
module.exports = CONFIG;
+27
View File
@@ -0,0 +1,27 @@
#!/bin/sh
# rtorrent.rc
# system.method.set_key=event.download.finished,filebot,"execute={rtorrent-postprocess.sh,$d.get_base_path=,$d.get_name=,$d.get_custom1=}"
TORRENT_PATH="$1"
TORRENT_NAME="$2"
TORRENT_LABEL="$(echo $3 | tr '[:upper:]' '[:lower:]')"
case $TORRENT_LABEL in
films|movies|film|movie)
/filebot/filebot.sh --db TheMovieDB -script fn:amc --output "/data/Media" --action <FILEBOT_RENAME_METHOD> --conflict skip -non-strict --log-file amc.log --def excludeList=amc.excludes unsorted=y "movieFormat=/data/Media/Movies/<FILEBOT_RENAME_MOVIES>" "ut_dir=$TORRENT_PATH" "ut_kind=multi" "ut_title=$TORRENT_NAME" "ut_label=Movie" &
;;
music|musics|musique|musiques)
/filebot/filebot.sh --db ID3 -script fn:amc --output "/data/Media" --action <FILEBOT_RENAME_METHOD> --conflict skip -non-strict --log-file amc.log --def excludeList=amc.excludes unsorted=y music=y "musicFormat=/data/Media/Music/<FILEBOT_RENAME_MUSICS>" "ut_dir=$TORRENT_PATH" "ut_kind=multi" "ut_title=$TORRENT_NAME" "ut_label=Music" &
;;
tv|"tv show"|"tv shows"|series|serie)
/filebot/filebot.sh --db TheTVDB -script fn:amc --output "/data/Media" --action <FILEBOT_RENAME_METHOD> --conflict skip -non-strict --log-file amc.log --def excludeList=amc.excludes unsorted=y "seriesFormat=/data/Media/TV/<FILEBOT_RENAME_SERIES>" "ut_dir=$TORRENT_PATH" "ut_kind=multi" "ut_title=$TORRENT_NAME" "ut_label=TV Show" &
;;
anime|animes)
/filebot/filebot.sh --db AniDB -script fn:amc --output "/data/Media" --action <FILEBOT_RENAME_METHOD> --conflict skip -non-strict --log-file amc.log --def excludeList=amc.excludes unsorted=y "animeFormat=/data/Media/Animes/<FILEBOT_RENAME_ANIMES>" "ut_dir=$TORRENT_PATH" "ut_kind=multi" "ut_title=$TORRENT_NAME" "ut_label=Anime" &
;;
*)
/filebot/filebot.sh -script fn:amc --output "/data/Media" --action <FILEBOT_RENAME_METHOD> --conflict skip -non-strict --log-file amc.log --def excludeList=amc.excludes unsorted=y music=y "seriesFormat=/data/Media/TV/<FILEBOT_RENAME_SERIES>" "animeFormat=/data/Media/Animes/<FILEBOT_RENAME_ANIMES>" "movieFormat=/data/Media/Movies/<FILEBOT_RENAME_MOVIES>" "musicFormat=/data/Media/Music/<FILEBOT_RENAME_MUSICS>" "ut_dir=$TORRENT_PATH" "ut_kind=multi" "ut_title=$TORRENT_NAME" "ut_label=$TORRENT_LABEL" &
;;
esac
+11
View File
@@ -0,0 +1,11 @@
#!/bin/sh
(sleep 10; find /data/Media -type l | while read in; do
file "$in" | grep "broken symbolic link"
if [ $? -ne 1 ]; then
echo "Delete $in"
rm -f "$in"
fi
done
find /data/Media/ -type d -empty -exec rm -r {} \;) >> /tmp/postrm.log &
+28
View File
@@ -0,0 +1,28 @@
scgi_local = /tmp/rtorrent.sock
encoding_list = UTF-8
port_range = 49184-49184
port_random = no
check_hash = no
directory = /data/torrents
session = /data/.session
encryption = allow_incoming, try_outgoing, enable_retry
use_udp_trackers = yes
dht = off
peer_exchange = no
min_peers = 1
max_peers = 100
min_peers_seed = 1
max_peers_seed = 50
max_uploads = 15
network.xmlrpc.size_limit.set = 10000000
schedule = watch_directory,1,1,"load_start=/data/.watch/*.torrent"
schedule = untied_directory,5,5,"stop_untied=/data/.watch/*.torrent"
schedule = scgi_permission,0,0,"execute.nothrow=chmod,\"g+w,o=\",/tmp/rtorrent.sock"
schedule = insufficient_disk_space,1,30,close_low_diskspace=500M
system.method.set_key=event.download.finished,filebot,"execute={/usr/bin/postdl,$d.get_base_path=,$d.get_name=,$d.get_custom1=}"
system.method.set_key=event.download.erased,filebot_cleaner,"execute={/usr/bin/postrm}"
+30
View File
@@ -0,0 +1,30 @@
#!/bin/sh
mkdir -p /data/torrents
mkdir -p /data/.watch
mkdir -p /data/.session
mkdir -p /data/Media/Movies
mkdir -p /data/Media/TV
mkdir -p /data/Media/Animes
mkdir -p /data/Media/Music
sed -i -e "s|<FLOOD_SECRET>|$FLOOD_SECRET|g" \
-e "s|<CONTEXT_PATH>|$CONTEXT_PATH|g" /usr/flood/config.js
sed -i -e 's#<FILEBOT_RENAME_MOVIES>#'"$FILEBOT_RENAME_MOVIES"'#' \
-e 's#<FILEBOT_RENAME_METHOD>#'"$FILEBOT_RENAME_METHOD"'#' \
-e 's#<FILEBOT_RENAME_MUSICS>#'"$FILEBOT_RENAME_MUSICS"'#' \
-e 's#<FILEBOT_RENAME_SERIES>#'"$FILEBOT_RENAME_SERIES"'#' \
-e 's#<FILEBOT_RENAME_ANIMES>#'"$FILEBOT_RENAME_ANIMES"'#' /usr/bin/postdl
rm -f /data/.session/rtorrent.lock
chown -R $UID:$GID /data /home/torrent /tmp /filebot /usr/flood /flood-db /etc/s6.d
if [ ${RTORRENT_SCGI} -ne 0 ]; then
sed -i -e 's|^scgi_local.*$|scgi_port = 0.0.0.0:'${RTORRENT_SCGI}'|' /home/torrent/.rtorrent.rc
sed -i -e 's|socket: true,|socket: false,|' -e 's|port: 5000,|port: '${RTORRENT_SCGI}',|' /usr/flood/config.js
fi
exec su-exec $UID:$GID /bin/s6-svscan /etc/s6.d
@@ -0,0 +1,3 @@
#!/bin/sh
exit 0
@@ -0,0 +1,3 @@
#!/bin/sh
cd /usr/flood
exec /usr/flood/server/bin/www
@@ -0,0 +1,6 @@
#!/bin/sh
export TERM="xterm"
export HOME="/home/torrent"
export PWD="/home/torrent"
cd /home/torrent
exec rtorrent