This commit is contained in:
parent
e0acb3e921
commit
b9b0565e83
107
.drone.jsonnet
Normal file
107
.drone.jsonnet
Normal file
@ -0,0 +1,107 @@
|
|||||||
|
local PipelineBuild(os='linux', arch='amd64') = {
|
||||||
|
local tag = os + '-' + arch,
|
||||||
|
local version_tag = os + '-' + arch,
|
||||||
|
local file_suffix = std.strReplace(version_tag, '-', '.'),
|
||||||
|
kind: "pipeline",
|
||||||
|
name: version_tag,
|
||||||
|
platform: {
|
||||||
|
os: os,
|
||||||
|
arch: arch,
|
||||||
|
},
|
||||||
|
steps: [
|
||||||
|
{
|
||||||
|
name: 'dryrun',
|
||||||
|
image: 'plugins/docker:' + tag,
|
||||||
|
pull: 'always',
|
||||||
|
settings: {
|
||||||
|
dry_run: true,
|
||||||
|
tags: version_tag,
|
||||||
|
dockerfile: 'docker/Dockerfile.' + file_suffix,
|
||||||
|
repo: ' xoxys/ttrss',
|
||||||
|
username: { from_secret: "docker_username" },
|
||||||
|
password: { from_secret: "docker_password" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'publish',
|
||||||
|
image: 'plugins/docker:' + tag,
|
||||||
|
pull: 'always',
|
||||||
|
settings: {
|
||||||
|
auto_tag: true,
|
||||||
|
auto_tag_suffix: version_tag,
|
||||||
|
dockerfile: 'docker/Dockerfile.' + file_suffix,
|
||||||
|
repo: ' xoxys/ttrss',
|
||||||
|
username: { from_secret: "docker_username" },
|
||||||
|
password: { from_secret: "docker_password" },
|
||||||
|
},
|
||||||
|
when: {
|
||||||
|
ref: [
|
||||||
|
'refs/heads/master',
|
||||||
|
'refs/tags/**',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
|
||||||
|
local PipelineNotifications(depends_on=[]) = {
|
||||||
|
kind: "pipeline",
|
||||||
|
name: "notifications",
|
||||||
|
platform: {
|
||||||
|
os: "linux",
|
||||||
|
arch: "amd64",
|
||||||
|
},
|
||||||
|
steps: [
|
||||||
|
{
|
||||||
|
image: "plugins/manifest",
|
||||||
|
name: "manifest",
|
||||||
|
pull: "always",
|
||||||
|
settings: {
|
||||||
|
ignore_missing: true,
|
||||||
|
username: { from_secret: "docker_username" },
|
||||||
|
password: { from_secret: "docker_password" },
|
||||||
|
spec: "docker/manifest.tmpl",
|
||||||
|
},
|
||||||
|
when: {
|
||||||
|
ref: [
|
||||||
|
'refs/heads/master',
|
||||||
|
'refs/tags/**',
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "microbadger",
|
||||||
|
image: "plugins/webhook",
|
||||||
|
pull: "always",
|
||||||
|
settings: {
|
||||||
|
urls: { from_secret: "microbadger_url" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
image: "plugins/matrix",
|
||||||
|
name: "matrix",
|
||||||
|
pull: 'always',
|
||||||
|
settings: {
|
||||||
|
homeserver: "https://matrix.rknet.org",
|
||||||
|
roomid: "MtidqQXWWAtQcByBhH:rknet.org",
|
||||||
|
template: "Status: **{{ build.status }}**<br/> Build: [{{ repo.Owner }}/{{ repo.Name }}]({{ build.link }}) ({{ build.branch }}) by {{ build.author }}<br/> Message: {{ build.message }}",
|
||||||
|
username: { from_secret: "matrix_username" },
|
||||||
|
password: { from_secret: "matrix_password" },
|
||||||
|
},
|
||||||
|
when: {
|
||||||
|
status: [ "success", "failure" ],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
trigger: {
|
||||||
|
status: [ "success", "failure" ],
|
||||||
|
},
|
||||||
|
depends_on: depends_on,
|
||||||
|
};
|
||||||
|
|
||||||
|
[
|
||||||
|
PipelineBuild(os='linux', arch='amd64'),
|
||||||
|
PipelineNotifications(depends_on=[
|
||||||
|
"linux-amd64",
|
||||||
|
])
|
||||||
|
]
|
99
.drone.yml
Normal file
99
.drone.yml
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
name: linux-amd64
|
||||||
|
|
||||||
|
platform:
|
||||||
|
os: linux
|
||||||
|
arch: amd64
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: dryrun
|
||||||
|
pull: always
|
||||||
|
image: plugins/docker:linux-amd64
|
||||||
|
settings:
|
||||||
|
dockerfile: docker/Dockerfile.linux.amd64
|
||||||
|
dry_run: true
|
||||||
|
password:
|
||||||
|
from_secret: docker_password
|
||||||
|
repo: xoxys/ttrss
|
||||||
|
tags: linux-amd64
|
||||||
|
username:
|
||||||
|
from_secret: docker_username
|
||||||
|
|
||||||
|
- name: publish
|
||||||
|
pull: always
|
||||||
|
image: plugins/docker:linux-amd64
|
||||||
|
settings:
|
||||||
|
auto_tag: true
|
||||||
|
auto_tag_suffix: linux-amd64
|
||||||
|
dockerfile: docker/Dockerfile.linux.amd64
|
||||||
|
password:
|
||||||
|
from_secret: docker_password
|
||||||
|
repo: xoxys/ttrss
|
||||||
|
username:
|
||||||
|
from_secret: docker_username
|
||||||
|
when:
|
||||||
|
ref:
|
||||||
|
- refs/heads/master
|
||||||
|
- "refs/tags/**"
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
name: notifications
|
||||||
|
|
||||||
|
platform:
|
||||||
|
os: linux
|
||||||
|
arch: amd64
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: manifest
|
||||||
|
pull: always
|
||||||
|
image: plugins/manifest
|
||||||
|
settings:
|
||||||
|
ignore_missing: true
|
||||||
|
password:
|
||||||
|
from_secret: docker_password
|
||||||
|
spec: docker/manifest.tmpl
|
||||||
|
username:
|
||||||
|
from_secret: docker_username
|
||||||
|
when:
|
||||||
|
ref:
|
||||||
|
- refs/heads/master
|
||||||
|
- "refs/tags/**"
|
||||||
|
|
||||||
|
- name: microbadger
|
||||||
|
pull: always
|
||||||
|
image: plugins/webhook
|
||||||
|
settings:
|
||||||
|
urls:
|
||||||
|
from_secret: microbadger_url
|
||||||
|
|
||||||
|
- name: matrix
|
||||||
|
pull: always
|
||||||
|
image: plugins/matrix
|
||||||
|
settings:
|
||||||
|
homeserver: https://matrix.rknet.org
|
||||||
|
password:
|
||||||
|
from_secret: matrix_password
|
||||||
|
roomid: MtidqQXWWAtQcByBhH:rknet.org
|
||||||
|
template: "Status: **{{ build.status }}**<br/> Build: [{{ repo.Owner }}/{{ repo.Name }}]({{ build.link }}) ({{ build.branch }}) by {{ build.author }}<br/> Message: {{ build.message }}"
|
||||||
|
username:
|
||||||
|
from_secret: matrix_username
|
||||||
|
when:
|
||||||
|
status:
|
||||||
|
- success
|
||||||
|
- failure
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
status:
|
||||||
|
- success
|
||||||
|
- failure
|
||||||
|
|
||||||
|
depends_on:
|
||||||
|
- linux-amd64
|
||||||
|
|
||||||
|
---
|
||||||
|
kind: signature
|
||||||
|
hmac: 61db8b8005c0b27eb1a77e27f8db95a6778716d3623ecea9f3cf2498d6230541
|
||||||
|
|
||||||
|
...
|
34
Dockerfile.linux.amd64
Normal file
34
Dockerfile.linux.amd64
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
FROM alpine:3.10.0
|
||||||
|
|
||||||
|
ARG TTRSS_VERSION
|
||||||
|
ARG TTRSS_TARBALL=https://git.tt-rss.org/git/tt-rss/archive/${TT_RSS_VERSION}.tar.gz
|
||||||
|
ARG TTRSS_MASTER=https://git.tt-rss.org/fox/tt-rss.git
|
||||||
|
|
||||||
|
RUN apk update && \
|
||||||
|
apk add gomplate openssl unzip nginx bash git ca-certificates s6 curl ssmtp mailx php7 php7-curl \
|
||||||
|
php7-fpm php7-xml php7-dom php7-opcache php7-iconv php7-pdo php7-pdo_mysql php7-mysqli php7-mysqlnd \
|
||||||
|
php7-pdo_pgsql php7-pgsql php7-gd php7-mcrypt php7-posix php7-ldap php7-json php7-mbstring \
|
||||||
|
php7-session php7-fileinfo php7-intl php7-pcntl && \
|
||||||
|
rm -rf /var/cache/apk/* && \
|
||||||
|
rm -rf /var/www/localhost && \
|
||||||
|
rm -f /etc/php7/php-fpm.d/www.conf && \
|
||||||
|
mkdir -p /var/www/app && \
|
||||||
|
if [ -z ${TTRSS_VERSION+x} ]; then \
|
||||||
|
git clone ${TTRSS_MASTER} /var/www/app; \
|
||||||
|
else \
|
||||||
|
curl -o /tmp/ttrss.tar.gz -L ${TTRSS_TARBALL}.tar.gz && \
|
||||||
|
tar xf /tmp/ttrss.tar.gz -C /var/www/app/ --strip-components=1 && \
|
||||||
|
rm -rf /tmp/*; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
ADD overlay/ /
|
||||||
|
|
||||||
|
VOLUME /var/www/app/lock
|
||||||
|
VOLUME /var/www/app/cache
|
||||||
|
VOLUME /var/www/app/feed-icons
|
||||||
|
|
||||||
|
EXPOSE 80
|
||||||
|
|
||||||
|
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
|
||||||
|
WORKDIR /var/www/app
|
||||||
|
CMD []
|
20
docker-compose.yml
Normal file
20
docker-compose.yml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
version: '2'
|
||||||
|
|
||||||
|
services:
|
||||||
|
ttrss:
|
||||||
|
image: xoxys/ttrss:latest
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
|
||||||
|
db:
|
||||||
|
image: postgres
|
||||||
|
environment:
|
||||||
|
POSTGRES_USER: postgres
|
||||||
|
POSTGRES_PASSWORD: secure
|
||||||
|
POSTGRES_DB: ttrss
|
||||||
|
volumes:
|
||||||
|
- postgres_data:/var/lib/postgresql/data
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
postgres_data:
|
||||||
|
driver: local
|
13
manifest.tpl
Normal file
13
manifest.tpl
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
image: xoxys/ttrss:{{#if build.tag}}{{trimPrefix "v" build.tag}}{{else}}latest{{/if}}
|
||||||
|
{{#if build.tags}}
|
||||||
|
tags:
|
||||||
|
{{#each build.tags}}
|
||||||
|
- {{this}}
|
||||||
|
{{/each}}
|
||||||
|
{{/if}}
|
||||||
|
manifests:
|
||||||
|
-
|
||||||
|
image: plugins/ansible:{{#if build.tag}}{{trimPrefix "v" build.tag}}-{{/if}}linux-amd64
|
||||||
|
platform:
|
||||||
|
architecture: amd64
|
||||||
|
os: linux
|
68
overlay/etc/nginx/nginx.conf
Normal file
68
overlay/etc/nginx/nginx.conf
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
user nginx;
|
||||||
|
worker_processes 1;
|
||||||
|
pid /var/run/nginx.pid;
|
||||||
|
|
||||||
|
events {
|
||||||
|
worker_connections 1024;
|
||||||
|
}
|
||||||
|
|
||||||
|
http {
|
||||||
|
include mime.types;
|
||||||
|
default_type application/octet-stream;
|
||||||
|
|
||||||
|
sendfile on;
|
||||||
|
tcp_nopush on;
|
||||||
|
tcp_nodelay on;
|
||||||
|
keepalive_timeout 65;
|
||||||
|
server_tokens off;
|
||||||
|
access_log off;
|
||||||
|
error_log /dev/stderr;
|
||||||
|
|
||||||
|
fastcgi_buffers 16 16k;
|
||||||
|
fastcgi_buffer_size 32k;
|
||||||
|
|
||||||
|
server {
|
||||||
|
listen 80;
|
||||||
|
server_name localhost;
|
||||||
|
index index.php;
|
||||||
|
root /var/www/app;
|
||||||
|
client_max_body_size 32M;
|
||||||
|
|
||||||
|
location / {
|
||||||
|
try_files $uri $uri/ /index.php$is_args$args;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ \.php$ {
|
||||||
|
try_files $uri =404;
|
||||||
|
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||||
|
fastcgi_pass unix:/var/run/php-fpm.sock;
|
||||||
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
||||||
|
fastcgi_index index.php;
|
||||||
|
include fastcgi_params;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~ /\.ht {
|
||||||
|
return 404;
|
||||||
|
}
|
||||||
|
|
||||||
|
location ~* ^.+\.(ico|jpg|gif|png|css|js|svg|eot|ttf|woff|woff2|otf)$ {
|
||||||
|
log_not_found off;
|
||||||
|
expires 7d;
|
||||||
|
etag on;
|
||||||
|
}
|
||||||
|
|
||||||
|
gzip on;
|
||||||
|
gzip_comp_level 3;
|
||||||
|
gzip_disable "msie6";
|
||||||
|
gzip_vary on;
|
||||||
|
gzip_types
|
||||||
|
text/javascript
|
||||||
|
application/javascript
|
||||||
|
application/json
|
||||||
|
text/xml
|
||||||
|
application/xml
|
||||||
|
application/rss+xml
|
||||||
|
text/css
|
||||||
|
text/plain;
|
||||||
|
}
|
||||||
|
}
|
21
overlay/etc/php7/php-fpm.conf
Normal file
21
overlay/etc/php7/php-fpm.conf
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
[global]
|
||||||
|
error_log = /dev/stderr
|
||||||
|
log_level = warning
|
||||||
|
daemonize = no
|
||||||
|
|
||||||
|
[www]
|
||||||
|
catch_workers_output = yes
|
||||||
|
|
||||||
|
user = nginx
|
||||||
|
group = nginx
|
||||||
|
|
||||||
|
listen.owner = nginx
|
||||||
|
listen.group = nginx
|
||||||
|
listen = /var/run/php-fpm.sock
|
||||||
|
|
||||||
|
pm = dynamic
|
||||||
|
pm.max_children = 20
|
||||||
|
pm.start_servers = 1
|
||||||
|
pm.min_spare_servers = 1
|
||||||
|
pm.max_spare_servers = 3
|
||||||
|
pm.max_requests = 2048
|
391
overlay/etc/php7/php.ini
Normal file
391
overlay/etc/php7/php.ini
Normal file
@ -0,0 +1,391 @@
|
|||||||
|
[PHP]
|
||||||
|
user_ini.filename = ".user.ini"
|
||||||
|
user_ini.cache_ttl = 300
|
||||||
|
|
||||||
|
engine = On
|
||||||
|
short_open_tag = Off
|
||||||
|
|
||||||
|
precision = 14
|
||||||
|
|
||||||
|
output_buffering = 0
|
||||||
|
;output_handler =
|
||||||
|
|
||||||
|
zlib.output_compression = Off
|
||||||
|
;zlib.output_compression_level = -1
|
||||||
|
;zlib.output_handler =
|
||||||
|
|
||||||
|
implicit_flush = Off
|
||||||
|
|
||||||
|
unserialize_callback_func =
|
||||||
|
serialize_precision = 17
|
||||||
|
|
||||||
|
;open_basedir =
|
||||||
|
|
||||||
|
disable_functions =
|
||||||
|
disable_classes =
|
||||||
|
|
||||||
|
;highlight.string = #DD0000
|
||||||
|
;highlight.comment = #FF9900
|
||||||
|
;highlight.keyword = #007700
|
||||||
|
;highlight.default = #0000BB
|
||||||
|
;highlight.html = #000000
|
||||||
|
|
||||||
|
;ignore_user_abort = On
|
||||||
|
|
||||||
|
;realpath_cache_size = 16k
|
||||||
|
;realpath_cache_ttl = 120
|
||||||
|
|
||||||
|
zend.enable_gc = On
|
||||||
|
;zend.multibyte = Off
|
||||||
|
;zend.script_encoding =
|
||||||
|
|
||||||
|
expose_php = Off
|
||||||
|
|
||||||
|
max_execution_time = 30
|
||||||
|
max_input_time = 60
|
||||||
|
;max_input_nesting_level = 64
|
||||||
|
;max_input_vars = 1000
|
||||||
|
memory_limit = 128M
|
||||||
|
|
||||||
|
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
|
||||||
|
display_errors = Off
|
||||||
|
display_startup_errors = Off
|
||||||
|
log_errors = On
|
||||||
|
log_errors_max_len = 1024
|
||||||
|
ignore_repeated_errors = Off
|
||||||
|
ignore_repeated_source = Off
|
||||||
|
report_memleaks = On
|
||||||
|
;report_zend_debug = 0
|
||||||
|
;xmlrpc_errors = 0
|
||||||
|
;xmlrpc_error_number = 0
|
||||||
|
html_errors = On
|
||||||
|
;docref_root = "/phpmanual/"
|
||||||
|
;docref_ext = .html
|
||||||
|
;error_prepend_string = "<span style='color: #ff0000'>"
|
||||||
|
;error_append_string = "</span>"
|
||||||
|
error_log = php_errors.log
|
||||||
|
;windows.show_crt_warning
|
||||||
|
|
||||||
|
;arg_separator.output = "&"
|
||||||
|
;arg_separator.input = ";&"
|
||||||
|
|
||||||
|
variables_order = "GPCS"
|
||||||
|
request_order = "GP"
|
||||||
|
|
||||||
|
register_argc_argv = Off
|
||||||
|
auto_globals_jit = On
|
||||||
|
;enable_post_data_reading = Off
|
||||||
|
post_max_size = 8M
|
||||||
|
|
||||||
|
auto_prepend_file =
|
||||||
|
auto_append_file =
|
||||||
|
|
||||||
|
default_mimetype = "text/html"
|
||||||
|
default_charset = "UTF-8"
|
||||||
|
;internal_encoding =
|
||||||
|
;input_encoding =
|
||||||
|
;output_encoding =
|
||||||
|
|
||||||
|
;include_path = ".:/php7/includes"
|
||||||
|
|
||||||
|
doc_root =
|
||||||
|
user_dir =
|
||||||
|
|
||||||
|
extension_dir = "/usr/lib/php7/modules"
|
||||||
|
;sys_temp_dir = "/tmp"
|
||||||
|
enable_dl = Off
|
||||||
|
|
||||||
|
;cgi.force_redirect = 1
|
||||||
|
;cgi.nph = 1
|
||||||
|
;cgi.redirect_status_env =
|
||||||
|
cgi.fix_pathinfo = 0
|
||||||
|
cgi.discard_path = 1
|
||||||
|
|
||||||
|
;fastcgi.impersonate = 1
|
||||||
|
;fastcgi.logging = 0
|
||||||
|
;cgi.rfc2616_headers = 0
|
||||||
|
;cgi.check_shebang_line = 1
|
||||||
|
|
||||||
|
file_uploads = On
|
||||||
|
;upload_tmp_dir =
|
||||||
|
upload_max_filesize = 2M
|
||||||
|
max_file_uploads = 20
|
||||||
|
|
||||||
|
allow_url_fopen = On
|
||||||
|
allow_url_include = Off
|
||||||
|
|
||||||
|
;from="john@doe.com"
|
||||||
|
;user_agent="PHP"
|
||||||
|
|
||||||
|
default_socket_timeout = 60
|
||||||
|
;auto_detect_line_endings = Off
|
||||||
|
|
||||||
|
[CLI Server]
|
||||||
|
cli_server.color = On
|
||||||
|
|
||||||
|
[Date]
|
||||||
|
date.timezone = Europe/Berlin
|
||||||
|
;date.default_latitude = 31.7667
|
||||||
|
;date.default_longitude = 35.2333
|
||||||
|
;date.sunrise_zenith = 90.583333
|
||||||
|
;date.sunset_zenith = 90.583333
|
||||||
|
|
||||||
|
[filter]
|
||||||
|
;filter.default = unsafe_raw
|
||||||
|
;filter.default_flags =
|
||||||
|
|
||||||
|
[iconv]
|
||||||
|
;iconv.input_encoding =
|
||||||
|
;iconv.internal_encoding =
|
||||||
|
;iconv.output_encoding =
|
||||||
|
|
||||||
|
[intl]
|
||||||
|
;intl.default_locale =
|
||||||
|
;intl.error_level = E_WARNING
|
||||||
|
;intl.use_exceptions = 0
|
||||||
|
|
||||||
|
[sqlite3]
|
||||||
|
;sqlite3.extension_dir =
|
||||||
|
|
||||||
|
[Pcre]
|
||||||
|
;pcre.backtrack_limit = 100000
|
||||||
|
;pcre.recursion_limit = 100000
|
||||||
|
;pcre.jit = 1
|
||||||
|
|
||||||
|
[Pdo]
|
||||||
|
;pdo_odbc.connection_pooling = strict
|
||||||
|
;pdo_odbc.db2_instance_name
|
||||||
|
|
||||||
|
[Pdo_mysql]
|
||||||
|
pdo_mysql.cache_size = 2000
|
||||||
|
pdo_mysql.default_socket =
|
||||||
|
|
||||||
|
[Phar]
|
||||||
|
;phar.readonly = On
|
||||||
|
;phar.require_hash = On
|
||||||
|
;phar.cache_list =
|
||||||
|
|
||||||
|
[mail function]
|
||||||
|
SMTP = localhost
|
||||||
|
smtp_port = 25
|
||||||
|
;sendmail_path =
|
||||||
|
|
||||||
|
;mail.force_extra_parameters =
|
||||||
|
mail.add_x_header = On
|
||||||
|
;mail.log =
|
||||||
|
;mail.log = syslog
|
||||||
|
|
||||||
|
[SQL]
|
||||||
|
sql.safe_mode = On
|
||||||
|
|
||||||
|
[ODBC]
|
||||||
|
;odbc.default_db = Not yet implemented
|
||||||
|
;odbc.default_user = Not yet implemented
|
||||||
|
;odbc.default_pw = Not yet implemented
|
||||||
|
;odbc.default_cursortype
|
||||||
|
odbc.allow_persistent = On
|
||||||
|
odbc.check_persistent = On
|
||||||
|
odbc.max_persistent = -1
|
||||||
|
odbc.max_links = -1
|
||||||
|
odbc.defaultlrl = 4096
|
||||||
|
odbc.defaultbinmode = 1
|
||||||
|
;birdstep.max_links = -1
|
||||||
|
|
||||||
|
[Interbase]
|
||||||
|
ibase.allow_persistent = 1
|
||||||
|
ibase.max_persistent = -1
|
||||||
|
ibase.max_links = -1
|
||||||
|
;ibase.default_db =
|
||||||
|
;ibase.default_user =
|
||||||
|
;ibase.default_password =
|
||||||
|
;ibase.default_charset =
|
||||||
|
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
|
||||||
|
ibase.dateformat = "%Y-%m-%d"
|
||||||
|
ibase.timeformat = "%H:%M:%S"
|
||||||
|
|
||||||
|
[MySQLi]
|
||||||
|
;mysqli.allow_local_infile = On
|
||||||
|
mysqli.max_persistent = -1
|
||||||
|
mysqli.allow_persistent = On
|
||||||
|
mysqli.max_links = -1
|
||||||
|
mysqli.cache_size = 2000
|
||||||
|
mysqli.default_port = 3306
|
||||||
|
mysqli.default_socket =
|
||||||
|
mysqli.default_host =
|
||||||
|
mysqli.default_user =
|
||||||
|
mysqli.default_pw =
|
||||||
|
mysqli.reconnect = Off
|
||||||
|
|
||||||
|
[mysqlnd]
|
||||||
|
mysqlnd.collect_statistics = On
|
||||||
|
mysqlnd.collect_memory_statistics = Off
|
||||||
|
;mysqlnd.debug =
|
||||||
|
;mysqlnd.log_mask = 0
|
||||||
|
;mysqlnd.mempool_default_size = 16000
|
||||||
|
;mysqlnd.net_cmd_buffer_size = 2048
|
||||||
|
;mysqlnd.net_read_buffer_size = 32768
|
||||||
|
;mysqlnd.net_read_timeout = 31536000
|
||||||
|
;mysqlnd.sha256_server_public_key =
|
||||||
|
|
||||||
|
[OCI8]
|
||||||
|
;oci8.privileged_connect = Off
|
||||||
|
;oci8.max_persistent = -1
|
||||||
|
;oci8.persistent_timeout = -1
|
||||||
|
;oci8.ping_interval = 60
|
||||||
|
;oci8.connection_class =
|
||||||
|
;oci8.events = Off
|
||||||
|
;oci8.statement_cache_size = 20
|
||||||
|
;oci8.default_prefetch = 100
|
||||||
|
;oci8.old_oci_close_semantics = Off
|
||||||
|
|
||||||
|
[PostgreSQL]
|
||||||
|
pgsql.allow_persistent = On
|
||||||
|
pgsql.auto_reset_persistent = Off
|
||||||
|
pgsql.max_persistent = -1
|
||||||
|
pgsql.max_links = -1
|
||||||
|
pgsql.ignore_notice = 0
|
||||||
|
pgsql.log_notice = 0
|
||||||
|
|
||||||
|
[bcmath]
|
||||||
|
bcmath.scale = 0
|
||||||
|
|
||||||
|
[browscap]
|
||||||
|
browscap = /etc/php7/browscap.ini
|
||||||
|
|
||||||
|
[Session]
|
||||||
|
session.save_handler = files
|
||||||
|
;session.save_path = "/tmp"
|
||||||
|
session.use_strict_mode = 0
|
||||||
|
session.use_cookies = 1
|
||||||
|
;session.cookie_secure =
|
||||||
|
session.use_only_cookies = 1
|
||||||
|
session.name = PHPSESSID
|
||||||
|
session.auto_start = 0
|
||||||
|
session.cookie_lifetime = 0
|
||||||
|
session.cookie_path = /
|
||||||
|
session.cookie_domain =
|
||||||
|
session.cookie_httponly =
|
||||||
|
session.serialize_handler = php
|
||||||
|
session.gc_probability = 1
|
||||||
|
session.gc_divisor = 1000
|
||||||
|
session.gc_maxlifetime = 1440
|
||||||
|
session.referer_check =
|
||||||
|
;session.entropy_length = 32
|
||||||
|
;session.entropy_file = /dev/urandom
|
||||||
|
session.cache_limiter = nocache
|
||||||
|
session.cache_expire = 180
|
||||||
|
session.use_trans_sid = 0
|
||||||
|
session.hash_function = 0
|
||||||
|
session.hash_bits_per_character = 5
|
||||||
|
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
|
||||||
|
;session.upload_progress.enabled = On
|
||||||
|
;session.upload_progress.cleanup = On
|
||||||
|
;session.upload_progress.prefix = "upload_progress_"
|
||||||
|
;session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS"
|
||||||
|
;session.upload_progress.freq = "1%"
|
||||||
|
;session.upload_progress.min_freq = "1"
|
||||||
|
;session.lazy_write = On
|
||||||
|
|
||||||
|
[Assertion]
|
||||||
|
zend.assertions = -1
|
||||||
|
;assert.active = On
|
||||||
|
;assert.exception = On
|
||||||
|
;assert.warning = On
|
||||||
|
;assert.bail = Off
|
||||||
|
;assert.callback = 0
|
||||||
|
;assert.quiet_eval = 0
|
||||||
|
|
||||||
|
[COM]
|
||||||
|
;com.typelib_file =
|
||||||
|
;com.allow_dcom = true
|
||||||
|
;com.autoregister_typelib = true
|
||||||
|
;com.autoregister_casesensitive = false
|
||||||
|
;com.autoregister_verbose = true
|
||||||
|
;com.code_page=
|
||||||
|
|
||||||
|
[mbstring]
|
||||||
|
;mbstring.language = Japanese
|
||||||
|
;mbstring.internal_encoding =
|
||||||
|
;mbstring.http_input =
|
||||||
|
;mbstring.http_output =
|
||||||
|
;mbstring.encoding_translation = Off
|
||||||
|
;mbstring.detect_order = auto
|
||||||
|
;mbstring.substitute_character = none
|
||||||
|
;mbstring.func_overload = 0
|
||||||
|
;mbstring.strict_detection = On
|
||||||
|
;mbstring.http_output_conv_mimetype =
|
||||||
|
|
||||||
|
[gd]
|
||||||
|
;gd.jpeg_ignore_warning = 0
|
||||||
|
|
||||||
|
[exif]
|
||||||
|
;exif.encode_unicode = ISO-8859-15
|
||||||
|
;exif.decode_unicode_motorola = UCS-2BE
|
||||||
|
;exif.decode_unicode_intel = UCS-2LE
|
||||||
|
;exif.encode_jis =
|
||||||
|
;exif.decode_jis_motorola = JIS
|
||||||
|
;exif.decode_jis_intel = JIS
|
||||||
|
|
||||||
|
[Tidy]
|
||||||
|
;tidy.default_config = /usr/local/lib/php7/default.tcfg
|
||||||
|
tidy.clean_output = Off
|
||||||
|
|
||||||
|
[soap]
|
||||||
|
soap.wsdl_cache_enabled = 1
|
||||||
|
soap.wsdl_cache_dir = "/tmp"
|
||||||
|
soap.wsdl_cache_ttl = 86400
|
||||||
|
soap.wsdl_cache_limit = 5
|
||||||
|
|
||||||
|
[sysvshm]
|
||||||
|
;sysvshm.init_mem = 10000
|
||||||
|
|
||||||
|
[ldap]
|
||||||
|
ldap.max_links = -1
|
||||||
|
|
||||||
|
[mcrypt]
|
||||||
|
;mcrypt.algorithms_dir =
|
||||||
|
;mcrypt.modes_dir =
|
||||||
|
|
||||||
|
[dba]
|
||||||
|
;dba.default_handler =
|
||||||
|
|
||||||
|
[opcache]
|
||||||
|
;opcache.enable = 0
|
||||||
|
;opcache.enable_cli = 0
|
||||||
|
;opcache.memory_consumption = 64
|
||||||
|
;opcache.interned_strings_buffer = 4
|
||||||
|
;opcache.max_accelerated_files = 2000
|
||||||
|
;opcache.max_wasted_percentage = 5
|
||||||
|
;opcache.use_cwd = 1
|
||||||
|
;opcache.validate_timestamps = 1
|
||||||
|
;opcache.revalidate_freq = 2
|
||||||
|
;opcache.revalidate_path = 0
|
||||||
|
;opcache.save_comments = 1
|
||||||
|
;opcache.fast_shutdown = 0
|
||||||
|
;opcache.enable_file_override = 0
|
||||||
|
;opcache.optimization_level = 0xffffffff
|
||||||
|
;opcache.dups_fix = 0
|
||||||
|
;opcache.blacklist_filename =
|
||||||
|
;opcache.max_file_size = 0
|
||||||
|
;opcache.consistency_checks = 0
|
||||||
|
;opcache.force_restart_timeout = 180
|
||||||
|
;opcache.error_log =
|
||||||
|
;opcache.log_verbosity_level = 1
|
||||||
|
;opcache.preferred_memory_model =
|
||||||
|
;opcache.protect_memory = 0
|
||||||
|
;opcache.restrict_api =
|
||||||
|
;opcache.mmap_base =
|
||||||
|
;opcache.file_cache =
|
||||||
|
;opcache.file_cache_only = 0
|
||||||
|
;opcache.file_cache_consistency_checks = 1
|
||||||
|
;opcache.file_cache_fallback = 1
|
||||||
|
;opcache.huge_code_pages = 1
|
||||||
|
;opcache.validate_permission = 0
|
||||||
|
;opcache.validate_root = 0
|
||||||
|
|
||||||
|
[curl]
|
||||||
|
curl.cainfo = /etc/ssl/certs/ca-certificates.crt
|
||||||
|
|
||||||
|
[openssl]
|
||||||
|
openssl.cafile = /etc/ssl/certs/ca-certificates.crt
|
||||||
|
openssl.capath = /etc/ssl/certs
|
2
overlay/etc/services.d/.s6-svscan/finish
Normal file
2
overlay/etc/services.d/.s6-svscan/finish
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
/bin/true
|
2
overlay/etc/services.d/nginx/run
Executable file
2
overlay/etc/services.d/nginx/run
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/execlineb -P
|
||||||
|
nginx -g "daemon off;"
|
2
overlay/etc/services.d/php/run
Executable file
2
overlay/etc/services.d/php/run
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/execlineb -P
|
||||||
|
php-fpm7 -F
|
2
overlay/etc/services.d/update-feeds/run
Executable file
2
overlay/etc/services.d/update-feeds/run
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/execlineb -P
|
||||||
|
s6-setuidgid nginx php7 /var/www/app/update_daemon2.php > /dev/null 2>&1
|
180
overlay/etc/templates/config.php.tmpl
Normal file
180
overlay/etc/templates/config.php.tmpl
Normal file
@ -0,0 +1,180 @@
|
|||||||
|
<?php
|
||||||
|
// *******************************************
|
||||||
|
// *** Database configuration (important!) ***
|
||||||
|
// *******************************************
|
||||||
|
|
||||||
|
define('DB_TYPE', '{{ getenv "TTRSS_DB_TYPE" "pgsql" }}');
|
||||||
|
define('DB_HOST', '{{ getenv "TTRSS_DB_HOST" "db" }}');
|
||||||
|
define('DB_USER', '{{ getenv "TTRSS_DB_USER" "postgres" }}');
|
||||||
|
define('DB_NAME', '{{ getenv "TTRSS_DB_NAME" "ttrss" }}');
|
||||||
|
define('DB_PASS', '{{ getenv "TTRSS_DB_PASS" "secure" }}');
|
||||||
|
define('DB_PORT', '{{ getenv "TTRSS_DB_PORT" "5432" }}'); // usually 5432 for PostgreSQL, 3306 for MySQL
|
||||||
|
|
||||||
|
define('MYSQL_CHARSET', 'UTF8');
|
||||||
|
// Connection charset for MySQL. If you have a legacy database and/or experience
|
||||||
|
// garbage unicode characters with this option, try setting it to a blank string.
|
||||||
|
|
||||||
|
// ***********************************
|
||||||
|
// *** Basic settings (important!) ***
|
||||||
|
// ***********************************
|
||||||
|
|
||||||
|
define('SELF_URL_PATH', '{{ getenv "TTRSS_SELF_URL_PATH" "http://localhost/" }}');
|
||||||
|
// This should be set to a fully qualified URL used to access
|
||||||
|
// your tt-rss instance over the net.
|
||||||
|
// The value should be a constant string literal. Please don't use
|
||||||
|
// PHP server variables here - you might introduce security
|
||||||
|
// issues on your install and cause hard to debug problems.
|
||||||
|
// If your tt-rss instance is behind a reverse proxy, use the external URL.
|
||||||
|
|
||||||
|
define('SINGLE_USER_MODE', {{ getenv "TTRSS_SINGLE_USER_MODE" "false" }});
|
||||||
|
// Operate in single user mode, disables all functionality related to
|
||||||
|
// multiple users and authentication. Enabling this assumes you have
|
||||||
|
// your tt-rss directory protected by other means (e.g. http auth).
|
||||||
|
|
||||||
|
define('SIMPLE_UPDATE_MODE', {{ getenv "TTRSS_SELF_URL_PATH" "false" }});
|
||||||
|
// Enables fallback update mode where tt-rss tries to update feeds in
|
||||||
|
// background while tt-rss is open in your browser.
|
||||||
|
// If you don't have a lot of feeds and don't want to or can't run
|
||||||
|
// background processes while not running tt-rss, this method is generally
|
||||||
|
// viable to keep your feeds up to date.
|
||||||
|
// Still, there are more robust (and recommended) updating methods
|
||||||
|
// available, you can read about them here: http://tt-rss.org/wiki/UpdatingFeeds
|
||||||
|
|
||||||
|
// *****************************
|
||||||
|
// *** Files and directories ***
|
||||||
|
// *****************************
|
||||||
|
|
||||||
|
define('PHP_EXECUTABLE', '{{ getenv "TTRSS_PHP_EXECUTABLE" "/usr/bin/php" }}');
|
||||||
|
// Path to PHP *COMMAND LINE* executable, used for various command-line tt-rss
|
||||||
|
// programs and update daemon. Do not try to use CGI binary here, it won't work.
|
||||||
|
// If you see HTTP headers being displayed while running tt-rss scripts,
|
||||||
|
// then most probably you are using the CGI binary. If you are unsure what to
|
||||||
|
// put in here, ask your hosting provider.
|
||||||
|
|
||||||
|
define('LOCK_DIRECTORY', 'lock');
|
||||||
|
// Directory for lockfiles, must be writable to the user you run
|
||||||
|
// daemon process or cronjobs under.
|
||||||
|
|
||||||
|
define('CACHE_DIR', 'cache');
|
||||||
|
// Local cache directory for RSS feed content.
|
||||||
|
|
||||||
|
define('ICONS_DIR', 'feed-icons');
|
||||||
|
define('ICONS_URL', 'feed-icons');
|
||||||
|
// Local and URL path to the directory, where feed favicons are stored.
|
||||||
|
// Unless you really know what you're doing, please keep those relative
|
||||||
|
// to tt-rss main directory.
|
||||||
|
|
||||||
|
// **********************
|
||||||
|
// *** Authentication ***
|
||||||
|
// **********************
|
||||||
|
|
||||||
|
// Please see PLUGINS below to configure various authentication modules.
|
||||||
|
|
||||||
|
define('AUTH_AUTO_CREATE', {{ getenv "TTRSS_AUTH_AUTO_CREATE" "true" }});
|
||||||
|
// Allow authentication modules to auto-create users in tt-rss internal
|
||||||
|
// database when authenticated successfully.
|
||||||
|
|
||||||
|
define('AUTH_AUTO_LOGIN', {{ getenv "TTRSS_AUTH_AUTO_LOGIN" "true" }});
|
||||||
|
// Automatically login user on remote or other kind of externally supplied
|
||||||
|
// authentication, otherwise redirect to login form as normal.
|
||||||
|
// If set to true, users won't be able to set application language
|
||||||
|
// and settings profile.
|
||||||
|
|
||||||
|
// *********************
|
||||||
|
// *** Feed settings ***
|
||||||
|
// *********************
|
||||||
|
|
||||||
|
define('FORCE_ARTICLE_PURGE', {{ getenv "TTRSS_FORCE_ARTICLE_PURGE" "0" }});
|
||||||
|
// When this option is not 0, users ability to control feed purging
|
||||||
|
// intervals is disabled and all articles (which are not starred)
|
||||||
|
// older than this amount of days are purged.
|
||||||
|
|
||||||
|
// ****************************
|
||||||
|
// *** Sphinx search plugin ***
|
||||||
|
// ****************************
|
||||||
|
|
||||||
|
define('SPHINX_SERVER', '{{ getenv "TTRSS_SPHINX_SERVER" "localhost:9312" }}');
|
||||||
|
// Hostname:port combination for the Sphinx server.
|
||||||
|
|
||||||
|
define('SPHINX_INDEX', '{{ getenv "TTRSS_SPHINX_INDEX" "ttrss, delta" }}');
|
||||||
|
// Index name in Sphinx configuration. You can specify multiple indexes
|
||||||
|
// as a comma-separated string.
|
||||||
|
// Example configuration files are available on tt-rss wiki.
|
||||||
|
|
||||||
|
// ***********************************
|
||||||
|
// *** Self-registrations by users ***
|
||||||
|
// ***********************************
|
||||||
|
|
||||||
|
define('ENABLE_REGISTRATION', {{ getenv "TTRSS_ENABLE_REGISTRATION" "false" }});
|
||||||
|
// Allow users to register themselves. Please be aware that allowing
|
||||||
|
// random people to access your tt-rss installation is a security risk
|
||||||
|
// and potentially might lead to data loss or server exploit. Disabled
|
||||||
|
// by default.
|
||||||
|
|
||||||
|
define('REG_NOTIFY_ADDRESS', '{{ getenv "TTRSS_REG_NOTIFY_ADDRESS" }}');
|
||||||
|
// Email address to send new user notifications to.
|
||||||
|
|
||||||
|
define('REG_MAX_USERS', {{ getenv "TTRSS_REG_MAX_USERS" "10" }});
|
||||||
|
// Maximum amount of users which will be allowed to register on this
|
||||||
|
// system. 0 - no limit.
|
||||||
|
|
||||||
|
// **********************************
|
||||||
|
// *** Cookies and login sessions ***
|
||||||
|
// **********************************
|
||||||
|
|
||||||
|
define('SESSION_COOKIE_LIFETIME', {{ getenv "TTRSS_SESSION_COOKIE_LIFETIME" "86400" }});
|
||||||
|
// Default lifetime of a session (e.g. login) cookie. In seconds,
|
||||||
|
// 0 means cookie will be deleted when browser closes.
|
||||||
|
|
||||||
|
// *********************************
|
||||||
|
// *** Email and digest settings ***
|
||||||
|
// *********************************
|
||||||
|
|
||||||
|
// Tiny Tiny RSS sends mail via PHP mail() function, unless handled
|
||||||
|
// by a plugin.
|
||||||
|
|
||||||
|
// If you need SMTP support, take a look here:
|
||||||
|
// https://git.tt-rss.org/fox/ttrss-mailer-smtp
|
||||||
|
|
||||||
|
define('SMTP_FROM_NAME', '{{ getenv "TTRSS_SMTP_FROM_NAME" "Tiny Tiny RSS" }}');
|
||||||
|
define('SMTP_FROM_ADDRESS', '{{ getenv "TTRSS_SMTP_FROM_NAME" }}');
|
||||||
|
// Name, address and subject for sending outgoing mail. This applies
|
||||||
|
// to password reset notifications, digest emails and any other mail.
|
||||||
|
|
||||||
|
define('DIGEST_SUBJECT', '{{ getenv "TTRSS_DIGEST_SUBJECT" "[tt-rss] New headlines for last 24 hours" }}');
|
||||||
|
// Subject line for email digests
|
||||||
|
|
||||||
|
// ***************************************
|
||||||
|
// *** Other settings (less important) ***
|
||||||
|
// ***************************************
|
||||||
|
|
||||||
|
define('CHECK_FOR_UPDATES', {{ getenv "TTRSS_CHECK_FOR_UPDATES" "true" }});
|
||||||
|
// Check for updates automatically if running Git version
|
||||||
|
|
||||||
|
define('ENABLE_GZIP_OUTPUT', {{ getenv "TTRSS_ENABLE_GZIP_OUTPUT" "false" }});
|
||||||
|
// Selectively gzip output to improve wire performance. This requires
|
||||||
|
// PHP Zlib extension on the server.
|
||||||
|
// Enabling this can break tt-rss in several httpd/php configurations,
|
||||||
|
// if you experience weird errors and tt-rss failing to start, blank pages
|
||||||
|
// after login, or content encoding errors, disable it.
|
||||||
|
|
||||||
|
define('PLUGINS', '{{ getenv "TTRSS_PLUGINS" "auth_internal, note" }}');
|
||||||
|
// Comma-separated list of plugins to load automatically for all users.
|
||||||
|
// System plugins have to be specified here. Please enable at least one
|
||||||
|
// authentication plugin here (auth_*).
|
||||||
|
// Users may enable other user plugins from Preferences/Plugins but may not
|
||||||
|
// disable plugins specified in this list.
|
||||||
|
// Disabling auth_internal in this list would automatically disable
|
||||||
|
// reset password link on the login form.
|
||||||
|
|
||||||
|
define('LOG_DESTINATION', '{{ getenv "TTRSS_LOG_DESTINATION" "sql" }}');
|
||||||
|
// Error log destination to use. Possible values: sql (uses internal logging
|
||||||
|
// you can read in Preferences -> System), syslog - logs to system log.
|
||||||
|
// Setting this to blank uses PHP logging (usually to http server
|
||||||
|
// error.log).
|
||||||
|
// Note that feed updating daemons don't use this logging facility
|
||||||
|
// for normal output.
|
||||||
|
|
||||||
|
define('CONFIG_VERSION', {{ getenv "TTRSS_CONFIG_VERSION" "26" }});
|
||||||
|
// Expected config version. Please update this option in config.php
|
||||||
|
// if necessary (after migrating all new options from this file).
|
391
overlay/etc/templates/php.ini.tmpl
Normal file
391
overlay/etc/templates/php.ini.tmpl
Normal file
@ -0,0 +1,391 @@
|
|||||||
|
[PHP]
|
||||||
|
user_ini.filename = ".user.ini"
|
||||||
|
user_ini.cache_ttl = 300
|
||||||
|
|
||||||
|
engine = On
|
||||||
|
short_open_tag = Off
|
||||||
|
|
||||||
|
precision = 14
|
||||||
|
|
||||||
|
output_buffering = 0
|
||||||
|
;output_handler =
|
||||||
|
|
||||||
|
zlib.output_compression = Off
|
||||||
|
;zlib.output_compression_level = -1
|
||||||
|
;zlib.output_handler =
|
||||||
|
|
||||||
|
implicit_flush = Off
|
||||||
|
|
||||||
|
unserialize_callback_func =
|
||||||
|
serialize_precision = 17
|
||||||
|
|
||||||
|
;open_basedir =
|
||||||
|
|
||||||
|
disable_functions =
|
||||||
|
disable_classes =
|
||||||
|
|
||||||
|
;highlight.string = #DD0000
|
||||||
|
;highlight.comment = #FF9900
|
||||||
|
;highlight.keyword = #007700
|
||||||
|
;highlight.default = #0000BB
|
||||||
|
;highlight.html = #000000
|
||||||
|
|
||||||
|
;ignore_user_abort = On
|
||||||
|
|
||||||
|
;realpath_cache_size = 16k
|
||||||
|
;realpath_cache_ttl = 120
|
||||||
|
|
||||||
|
zend.enable_gc = On
|
||||||
|
;zend.multibyte = Off
|
||||||
|
;zend.script_encoding =
|
||||||
|
|
||||||
|
expose_php = {{ getenv "PHP_EXPOSE_PHP" "Off" }}
|
||||||
|
|
||||||
|
max_execution_time = {{ getenv "PHP_MAX_EXECUTION_TIME" "30" }}
|
||||||
|
max_input_time = {{ getenv "PHP_MAX_INPUT_TIME" "60" }}
|
||||||
|
;max_input_nesting_level = 64
|
||||||
|
;max_input_vars = 1000
|
||||||
|
memory_limit = {{ getenv "PHP_MEMORY_LIMIT" "128M" }}
|
||||||
|
|
||||||
|
error_reporting = {{ getenv "PHP_ERROR_REPORTING" "E_ALL & ~E_DEPRECATED & ~E_STRICT" }}
|
||||||
|
display_errors = {{ getenv "PHP_DISPLAY_ERRORS" "Off" }}
|
||||||
|
display_startup_errors = {{ getenv "PHP_DISPLAY_STARTUP_ERRORS" "Off" }}
|
||||||
|
log_errors = {{ getenv "PHP_LOG_ERRORS" "On" }}
|
||||||
|
log_errors_max_len = {{ getenv "PHP_LOG_ERRORS_MAX_LEN" "1024" }}
|
||||||
|
ignore_repeated_errors = {{ getenv "PHP_IGNORE_REPEATED_ERRORS" "Off" }}
|
||||||
|
ignore_repeated_source = {{ getenv "PHP_IGNORE_REPEATED_SOURCE" "Off" }}
|
||||||
|
report_memleaks = {{ getenv "PHP_REPORT_MEMLEAKS" "On" }}
|
||||||
|
;report_zend_debug = 0
|
||||||
|
;xmlrpc_errors = 0
|
||||||
|
;xmlrpc_error_number = 0
|
||||||
|
html_errors = {{ getenv "PHP_HTML_ERRORS" "On" }}
|
||||||
|
;docref_root = "/phpmanual/"
|
||||||
|
;docref_ext = .html
|
||||||
|
;error_prepend_string = "<span style='color: #ff0000'>"
|
||||||
|
;error_append_string = "</span>"
|
||||||
|
error_log = {{ getenv "PHP_ERROR_LOG" "php_errors.log"}}
|
||||||
|
;windows.show_crt_warning
|
||||||
|
|
||||||
|
;arg_separator.output = "&"
|
||||||
|
;arg_separator.input = ";&"
|
||||||
|
|
||||||
|
variables_order = "GPCS"
|
||||||
|
request_order = "GP"
|
||||||
|
|
||||||
|
register_argc_argv = Off
|
||||||
|
auto_globals_jit = On
|
||||||
|
;enable_post_data_reading = Off
|
||||||
|
post_max_size = {{ getenv "PHP_POST_MAX_SIZE" "8M" }}
|
||||||
|
|
||||||
|
auto_prepend_file =
|
||||||
|
auto_append_file =
|
||||||
|
|
||||||
|
default_mimetype = "text/html"
|
||||||
|
default_charset = "UTF-8"
|
||||||
|
;internal_encoding =
|
||||||
|
;input_encoding =
|
||||||
|
;output_encoding =
|
||||||
|
|
||||||
|
;include_path = ".:/php7/includes"
|
||||||
|
|
||||||
|
doc_root =
|
||||||
|
user_dir =
|
||||||
|
|
||||||
|
extension_dir = "/usr/lib/php7/modules"
|
||||||
|
;sys_temp_dir = "/tmp"
|
||||||
|
enable_dl = Off
|
||||||
|
|
||||||
|
;cgi.force_redirect = 1
|
||||||
|
;cgi.nph = 1
|
||||||
|
;cgi.redirect_status_env =
|
||||||
|
cgi.fix_pathinfo = 0
|
||||||
|
cgi.discard_path = 1
|
||||||
|
|
||||||
|
;fastcgi.impersonate = 1
|
||||||
|
;fastcgi.logging = 0
|
||||||
|
;cgi.rfc2616_headers = 0
|
||||||
|
;cgi.check_shebang_line = 1
|
||||||
|
|
||||||
|
file_uploads = On
|
||||||
|
;upload_tmp_dir =
|
||||||
|
upload_max_filesize = {{ getenv "PHP_UPLOAD_MAX_FILESIZE" "2M" }}
|
||||||
|
max_file_uploads = 20
|
||||||
|
|
||||||
|
allow_url_fopen = {{ getenv "PHP_ALLOW_URL_FOPEN" "On" }}
|
||||||
|
allow_url_include = Off
|
||||||
|
|
||||||
|
;from="john@doe.com"
|
||||||
|
;user_agent="PHP"
|
||||||
|
|
||||||
|
default_socket_timeout = 60
|
||||||
|
;auto_detect_line_endings = Off
|
||||||
|
|
||||||
|
[CLI Server]
|
||||||
|
cli_server.color = On
|
||||||
|
|
||||||
|
[Date]
|
||||||
|
date.timezone = {{ getenv "PHP_DATE_TIMEZONE" "Europe/Berlin" }}
|
||||||
|
;date.default_latitude = 31.7667
|
||||||
|
;date.default_longitude = 35.2333
|
||||||
|
;date.sunrise_zenith = 90.583333
|
||||||
|
;date.sunset_zenith = 90.583333
|
||||||
|
|
||||||
|
[filter]
|
||||||
|
;filter.default = unsafe_raw
|
||||||
|
;filter.default_flags =
|
||||||
|
|
||||||
|
[iconv]
|
||||||
|
;iconv.input_encoding =
|
||||||
|
;iconv.internal_encoding =
|
||||||
|
;iconv.output_encoding =
|
||||||
|
|
||||||
|
[intl]
|
||||||
|
;intl.default_locale =
|
||||||
|
;intl.error_level = E_WARNING
|
||||||
|
;intl.use_exceptions = 0
|
||||||
|
|
||||||
|
[sqlite3]
|
||||||
|
;sqlite3.extension_dir =
|
||||||
|
|
||||||
|
[Pcre]
|
||||||
|
;pcre.backtrack_limit = 100000
|
||||||
|
;pcre.recursion_limit = 100000
|
||||||
|
;pcre.jit = 1
|
||||||
|
|
||||||
|
[Pdo]
|
||||||
|
;pdo_odbc.connection_pooling = strict
|
||||||
|
;pdo_odbc.db2_instance_name
|
||||||
|
|
||||||
|
[Pdo_mysql]
|
||||||
|
pdo_mysql.cache_size = 2000
|
||||||
|
pdo_mysql.default_socket =
|
||||||
|
|
||||||
|
[Phar]
|
||||||
|
;phar.readonly = On
|
||||||
|
;phar.require_hash = On
|
||||||
|
;phar.cache_list =
|
||||||
|
|
||||||
|
[mail function]
|
||||||
|
SMTP = localhost
|
||||||
|
smtp_port = 25
|
||||||
|
;sendmail_path =
|
||||||
|
|
||||||
|
;mail.force_extra_parameters =
|
||||||
|
mail.add_x_header = On
|
||||||
|
;mail.log =
|
||||||
|
;mail.log = syslog
|
||||||
|
|
||||||
|
[SQL]
|
||||||
|
sql.safe_mode = {{ getenv "PHP_SQL_SAFE_MODE" "On" }}
|
||||||
|
|
||||||
|
[ODBC]
|
||||||
|
;odbc.default_db = Not yet implemented
|
||||||
|
;odbc.default_user = Not yet implemented
|
||||||
|
;odbc.default_pw = Not yet implemented
|
||||||
|
;odbc.default_cursortype
|
||||||
|
odbc.allow_persistent = On
|
||||||
|
odbc.check_persistent = On
|
||||||
|
odbc.max_persistent = -1
|
||||||
|
odbc.max_links = -1
|
||||||
|
odbc.defaultlrl = 4096
|
||||||
|
odbc.defaultbinmode = 1
|
||||||
|
;birdstep.max_links = -1
|
||||||
|
|
||||||
|
[Interbase]
|
||||||
|
ibase.allow_persistent = 1
|
||||||
|
ibase.max_persistent = -1
|
||||||
|
ibase.max_links = -1
|
||||||
|
;ibase.default_db =
|
||||||
|
;ibase.default_user =
|
||||||
|
;ibase.default_password =
|
||||||
|
;ibase.default_charset =
|
||||||
|
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
|
||||||
|
ibase.dateformat = "%Y-%m-%d"
|
||||||
|
ibase.timeformat = "%H:%M:%S"
|
||||||
|
|
||||||
|
[MySQLi]
|
||||||
|
;mysqli.allow_local_infile = On
|
||||||
|
mysqli.max_persistent = -1
|
||||||
|
mysqli.allow_persistent = On
|
||||||
|
mysqli.max_links = -1
|
||||||
|
mysqli.cache_size = 2000
|
||||||
|
mysqli.default_port = 3306
|
||||||
|
mysqli.default_socket =
|
||||||
|
mysqli.default_host =
|
||||||
|
mysqli.default_user =
|
||||||
|
mysqli.default_pw =
|
||||||
|
mysqli.reconnect = Off
|
||||||
|
|
||||||
|
[mysqlnd]
|
||||||
|
mysqlnd.collect_statistics = On
|
||||||
|
mysqlnd.collect_memory_statistics = Off
|
||||||
|
;mysqlnd.debug =
|
||||||
|
;mysqlnd.log_mask = 0
|
||||||
|
;mysqlnd.mempool_default_size = 16000
|
||||||
|
;mysqlnd.net_cmd_buffer_size = 2048
|
||||||
|
;mysqlnd.net_read_buffer_size = 32768
|
||||||
|
;mysqlnd.net_read_timeout = 31536000
|
||||||
|
;mysqlnd.sha256_server_public_key =
|
||||||
|
|
||||||
|
[OCI8]
|
||||||
|
;oci8.privileged_connect = Off
|
||||||
|
;oci8.max_persistent = -1
|
||||||
|
;oci8.persistent_timeout = -1
|
||||||
|
;oci8.ping_interval = 60
|
||||||
|
;oci8.connection_class =
|
||||||
|
;oci8.events = Off
|
||||||
|
;oci8.statement_cache_size = 20
|
||||||
|
;oci8.default_prefetch = 100
|
||||||
|
;oci8.old_oci_close_semantics = Off
|
||||||
|
|
||||||
|
[PostgreSQL]
|
||||||
|
pgsql.allow_persistent = On
|
||||||
|
pgsql.auto_reset_persistent = Off
|
||||||
|
pgsql.max_persistent = -1
|
||||||
|
pgsql.max_links = -1
|
||||||
|
pgsql.ignore_notice = 0
|
||||||
|
pgsql.log_notice = 0
|
||||||
|
|
||||||
|
[bcmath]
|
||||||
|
bcmath.scale = 0
|
||||||
|
|
||||||
|
[browscap]
|
||||||
|
browscap = /etc/php7/browscap.ini
|
||||||
|
|
||||||
|
[Session]
|
||||||
|
session.save_handler = files
|
||||||
|
;session.save_path = "/tmp"
|
||||||
|
session.use_strict_mode = 0
|
||||||
|
session.use_cookies = 1
|
||||||
|
;session.cookie_secure =
|
||||||
|
session.use_only_cookies = 1
|
||||||
|
session.name = PHPSESSID
|
||||||
|
session.auto_start = 0
|
||||||
|
session.cookie_lifetime = 0
|
||||||
|
session.cookie_path = /
|
||||||
|
session.cookie_domain =
|
||||||
|
session.cookie_httponly =
|
||||||
|
session.serialize_handler = php
|
||||||
|
session.gc_probability = 1
|
||||||
|
session.gc_divisor = 1000
|
||||||
|
session.gc_maxlifetime = 1440
|
||||||
|
session.referer_check =
|
||||||
|
;session.entropy_length = 32
|
||||||
|
;session.entropy_file = /dev/urandom
|
||||||
|
session.cache_limiter = nocache
|
||||||
|
session.cache_expire = 180
|
||||||
|
session.use_trans_sid = 0
|
||||||
|
session.hash_function = 0
|
||||||
|
session.hash_bits_per_character = 5
|
||||||
|
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"
|
||||||
|
;session.upload_progress.enabled = On
|
||||||
|
;session.upload_progress.cleanup = On
|
||||||
|
;session.upload_progress.prefix = "upload_progress_"
|
||||||
|
;session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS"
|
||||||
|
;session.upload_progress.freq = "1%"
|
||||||
|
;session.upload_progress.min_freq = "1"
|
||||||
|
;session.lazy_write = On
|
||||||
|
|
||||||
|
[Assertion]
|
||||||
|
zend.assertions = -1
|
||||||
|
;assert.active = On
|
||||||
|
;assert.exception = On
|
||||||
|
;assert.warning = On
|
||||||
|
;assert.bail = Off
|
||||||
|
;assert.callback = 0
|
||||||
|
;assert.quiet_eval = 0
|
||||||
|
|
||||||
|
[COM]
|
||||||
|
;com.typelib_file =
|
||||||
|
;com.allow_dcom = true
|
||||||
|
;com.autoregister_typelib = true
|
||||||
|
;com.autoregister_casesensitive = false
|
||||||
|
;com.autoregister_verbose = true
|
||||||
|
;com.code_page=
|
||||||
|
|
||||||
|
[mbstring]
|
||||||
|
;mbstring.language = Japanese
|
||||||
|
;mbstring.internal_encoding =
|
||||||
|
;mbstring.http_input =
|
||||||
|
;mbstring.http_output =
|
||||||
|
;mbstring.encoding_translation = Off
|
||||||
|
;mbstring.detect_order = auto
|
||||||
|
;mbstring.substitute_character = none
|
||||||
|
;mbstring.func_overload = 0
|
||||||
|
;mbstring.strict_detection = On
|
||||||
|
;mbstring.http_output_conv_mimetype =
|
||||||
|
|
||||||
|
[gd]
|
||||||
|
;gd.jpeg_ignore_warning = 0
|
||||||
|
|
||||||
|
[exif]
|
||||||
|
;exif.encode_unicode = ISO-8859-15
|
||||||
|
;exif.decode_unicode_motorola = UCS-2BE
|
||||||
|
;exif.decode_unicode_intel = UCS-2LE
|
||||||
|
;exif.encode_jis =
|
||||||
|
;exif.decode_jis_motorola = JIS
|
||||||
|
;exif.decode_jis_intel = JIS
|
||||||
|
|
||||||
|
[Tidy]
|
||||||
|
;tidy.default_config = /usr/local/lib/php7/default.tcfg
|
||||||
|
tidy.clean_output = Off
|
||||||
|
|
||||||
|
[soap]
|
||||||
|
soap.wsdl_cache_enabled = 1
|
||||||
|
soap.wsdl_cache_dir = "/tmp"
|
||||||
|
soap.wsdl_cache_ttl = 86400
|
||||||
|
soap.wsdl_cache_limit = 5
|
||||||
|
|
||||||
|
[sysvshm]
|
||||||
|
;sysvshm.init_mem = 10000
|
||||||
|
|
||||||
|
[ldap]
|
||||||
|
ldap.max_links = -1
|
||||||
|
|
||||||
|
[mcrypt]
|
||||||
|
;mcrypt.algorithms_dir =
|
||||||
|
;mcrypt.modes_dir =
|
||||||
|
|
||||||
|
[dba]
|
||||||
|
;dba.default_handler =
|
||||||
|
|
||||||
|
[opcache]
|
||||||
|
;opcache.enable = 0
|
||||||
|
;opcache.enable_cli = 0
|
||||||
|
;opcache.memory_consumption = 64
|
||||||
|
;opcache.interned_strings_buffer = 4
|
||||||
|
;opcache.max_accelerated_files = 2000
|
||||||
|
;opcache.max_wasted_percentage = 5
|
||||||
|
;opcache.use_cwd = 1
|
||||||
|
;opcache.validate_timestamps = 1
|
||||||
|
;opcache.revalidate_freq = 2
|
||||||
|
;opcache.revalidate_path = 0
|
||||||
|
;opcache.save_comments = 1
|
||||||
|
;opcache.fast_shutdown = 0
|
||||||
|
;opcache.enable_file_override = 0
|
||||||
|
;opcache.optimization_level = 0xffffffff
|
||||||
|
;opcache.dups_fix = 0
|
||||||
|
;opcache.blacklist_filename =
|
||||||
|
;opcache.max_file_size = 0
|
||||||
|
;opcache.consistency_checks = 0
|
||||||
|
;opcache.force_restart_timeout = 180
|
||||||
|
;opcache.error_log =
|
||||||
|
;opcache.log_verbosity_level = 1
|
||||||
|
;opcache.preferred_memory_model =
|
||||||
|
;opcache.protect_memory = 0
|
||||||
|
;opcache.restrict_api =
|
||||||
|
;opcache.mmap_base =
|
||||||
|
;opcache.file_cache =
|
||||||
|
;opcache.file_cache_only = 0
|
||||||
|
;opcache.file_cache_consistency_checks = 1
|
||||||
|
;opcache.file_cache_fallback = 1
|
||||||
|
;opcache.huge_code_pages = 1
|
||||||
|
;opcache.validate_permission = 0
|
||||||
|
;opcache.validate_root = 0
|
||||||
|
|
||||||
|
[curl]
|
||||||
|
curl.cainfo = /etc/ssl/certs/ca-certificates.crt
|
||||||
|
|
||||||
|
[openssl]
|
||||||
|
openssl.cafile = /etc/ssl/certs/ca-certificates.crt
|
||||||
|
openssl.capath = /etc/ssl/certs
|
12
overlay/usr/local/bin/entrypoint.sh
Executable file
12
overlay/usr/local/bin/entrypoint.sh
Executable file
@ -0,0 +1,12 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
/usr/bin/gomplate -V -o /etc/php7/php.ini -f /etc/templates/php.ini.tmpl
|
||||||
|
/usr/bin/gomplate -V -o /var/www/app/config.php -f /etc/templates/config.php.tmpl
|
||||||
|
|
||||||
|
chown -R nginx:nginx /var/www/app/lock
|
||||||
|
chown -R nginx:nginx /var/www/app/cache
|
||||||
|
chown -R nginx:nginx /var/www/app/feed-icons
|
||||||
|
|
||||||
|
s6-setuidgid nginx php7 /var/www/app/docker_setup.php
|
||||||
|
|
||||||
|
exec /bin/s6-svscan /etc/services.d
|
114
overlay/var/www/app/docker_setup.php
Normal file
114
overlay/var/www/app/docker_setup.php
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
// Based on https://git.tt-rss.org/fox/tt-rss/src/master/install/index.php
|
||||||
|
// For the case $op == 'installschema'
|
||||||
|
|
||||||
|
function sanity_check($db_type) {
|
||||||
|
$errors = array();
|
||||||
|
|
||||||
|
if (version_compare(PHP_VERSION, '5.6.0', '<')) {
|
||||||
|
array_push($errors, "PHP version 5.6.0 or newer required. You're using " . PHP_VERSION . ".");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists("curl_init") && !ini_get("allow_url_fopen")) {
|
||||||
|
array_push($errors, "PHP configuration option allow_url_fopen is disabled, and CURL functions are not present. Either enable allow_url_fopen or install PHP extension for CURL.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists("json_encode")) {
|
||||||
|
array_push($errors, "PHP support for JSON is required, but was not found.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!class_exists("PDO")) {
|
||||||
|
array_push($errors, "PHP support for PDO is required but was not found.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists("mb_strlen")) {
|
||||||
|
array_push($errors, "PHP support for mbstring functions is required but was not found.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists("hash")) {
|
||||||
|
array_push($errors, "PHP support for hash() function is required but was not found.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!function_exists("iconv")) {
|
||||||
|
array_push($errors, "PHP support for iconv is required to handle multiple charsets.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ini_get("safe_mode")) {
|
||||||
|
array_push($errors, "PHP safe mode setting is obsolete and not supported by tt-rss.");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!class_exists("DOMDocument")) {
|
||||||
|
array_push($errors, "PHP support for DOMDocument is required, but was not found.");
|
||||||
|
}
|
||||||
|
|
||||||
|
return $errors;
|
||||||
|
}
|
||||||
|
|
||||||
|
function pdo_connect($host, $user, $pass, $db, $type, $port = false) {
|
||||||
|
|
||||||
|
$db_port = $port ? ';port=' . $port : '';
|
||||||
|
$db_host = $host ? ';host=' . $host : '';
|
||||||
|
|
||||||
|
try {
|
||||||
|
$pdo = new PDO($type . ':dbname=' . $db . $db_host . $db_port,
|
||||||
|
$user,
|
||||||
|
$pass);
|
||||||
|
|
||||||
|
return $pdo;
|
||||||
|
} catch (Exception $e) {
|
||||||
|
echo "Unable to connect to database using specified parameters : " . $e->getMessage() . PHP_EOL;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (file_exists("/var/www/app/config.php")) {
|
||||||
|
echo "Loading config.php" . PHP_EOL;
|
||||||
|
require_once "/var/www/app/config.php";
|
||||||
|
|
||||||
|
$pdo = pdo_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME, DB_TYPE, DB_PORT);
|
||||||
|
if (!$pdo) {
|
||||||
|
exit(2);
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Running sanity check.";
|
||||||
|
$errors = sanity_check(DB_TYPE);
|
||||||
|
if (count($errors) > 0) {
|
||||||
|
foreach ($errors as $error) {
|
||||||
|
echo "$error";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "Connected to the database" . PHP_EOL;
|
||||||
|
|
||||||
|
$res = $pdo->query("SELECT true FROM ttrss_feeds");
|
||||||
|
if ($res && $res->fetch()) {
|
||||||
|
echo "Some tt-rss data already exists in this database, skipping database installation" . PHP_EOL;
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
echo "tt-rss data not found, initializing the database" . PHP_EOL;
|
||||||
|
|
||||||
|
$lines = explode(";", preg_replace("/[\r\n]/", "",
|
||||||
|
file_get_contents("/var/www/app/schema/ttrss_schema_".basename(DB_TYPE).".sql")));
|
||||||
|
|
||||||
|
$dbInitError = 0;
|
||||||
|
foreach ($lines as $line) {
|
||||||
|
if (strpos($line, "--") !== 0 && $line) {
|
||||||
|
$res = $pdo->query($line);
|
||||||
|
|
||||||
|
if (!$res) {
|
||||||
|
echo "Query: $line" . PHP_EOL;
|
||||||
|
echo "Error: " . implode(", ", $this->pdo->errorInfo()) . PHP_EOL;
|
||||||
|
$dbInitError++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if($dbInitError == 0) {
|
||||||
|
echo "Database initialization completed." . PHP_EOL;
|
||||||
|
exit(0);
|
||||||
|
} else {
|
||||||
|
echo "Database initialization failed." . PHP_EOL;
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user