Use pictrs instead of pictshare

This commit is contained in:
Felix Ableitner 2020-06-08 19:52:32 +02:00
parent a13e9fe395
commit e583e45d9a
10 changed files with 94 additions and 51 deletions

1
ansible/ansible.cfg vendored
View File

@ -1,5 +1,6 @@
[defaults] [defaults]
inventory=inventory inventory=inventory
interpreter_python=/usr/bin/python3
[ssh_connection] [ssh_connection]
pipelining = True pipelining = True

10
ansible/lemmy.yml vendored
View File

@ -24,10 +24,11 @@
creates: '/etc/letsencrypt/live/{{domain}}/privkey.pem' creates: '/etc/letsencrypt/live/{{domain}}/privkey.pem'
- name: create lemmy folder - name: create lemmy folder
file: path={{item.path}} state=directory file: path={{item.path}} {{item.owner}} state=directory
with_items: with_items:
- { path: '/lemmy/' } - { path: '/lemmy/', owner: 'root' }
- { path: '/lemmy/volumes/' } - { path: '/lemmy/volumes/', owner: 'root' }
- { path: '/lemmy/volumes/pictrs/', owner: '991' }
- block: - block:
- name: add template files - name: add template files
@ -38,9 +39,6 @@
- { src: '../docker/iframely.config.local.js', dest: '/lemmy/iframely.config.local.js', mode: '0600' } - { src: '../docker/iframely.config.local.js', dest: '/lemmy/iframely.config.local.js', mode: '0600' }
vars: vars:
lemmy_docker_image: "dessalines/lemmy:{{ lookup('file', 'VERSION') }}" lemmy_docker_image: "dessalines/lemmy:{{ lookup('file', 'VERSION') }}"
lemmy_port: "8536"
pictshare_port: "8537"
iframely_port: "8538"
- name: add config file (only during initial setup) - name: add config file (only during initial setup)
template: src='templates/config.hjson' dest='/lemmy/lemmy.hjson' mode='0600' force='no' owner='1000' group='1000' template: src='templates/config.hjson' dest='/lemmy/lemmy.hjson' mode='0600' force='no' owner='1000' group='1000'

View File

@ -26,10 +26,11 @@
creates: '/etc/letsencrypt/live/{{domain}}/privkey.pem' creates: '/etc/letsencrypt/live/{{domain}}/privkey.pem'
- name: create lemmy folder - name: create lemmy folder
file: path={{item.path}} state=directory file: path={{item.path}} owner={{item.owner}} state=directory
with_items: with_items:
- { path: '/lemmy/' } - { path: '/lemmy/', owner: 'root' }
- { path: '/lemmy/volumes/' } - { path: '/lemmy/volumes/', owner: 'root' }
- { path: '/lemmy/volumes/pictrs/', owner: '991' }
- block: - block:
- name: add template files - name: add template files

View File

@ -12,7 +12,7 @@ services:
- ./lemmy.hjson:/config/config.hjson:ro - ./lemmy.hjson:/config/config.hjson:ro
depends_on: depends_on:
- postgres - postgres
- pictshare - pictrs
- iframely - iframely
postgres: postgres:
@ -25,18 +25,19 @@ services:
- ./volumes/postgres:/var/lib/postgresql/data - ./volumes/postgres:/var/lib/postgresql/data
restart: always restart: always
pictshare: pictrs:
image: hascheksolutions/pictshare:latest image: asonix/pictrs:amd64-v0.1.0-r9
user: 991:991
ports: ports:
- "127.0.0.1:8537:80" - "127.0.0.1:8537:8080"
volumes: volumes:
- ./volumes/pictshare:/usr/share/nginx/html/data - ./volumes/pictrs:/mnt
restart: always restart: always
iframely: iframely:
image: dogbin/iframely:latest image: dogbin/iframely:latest
ports: ports:
- "127.0.0.1:8061:80" - "127.0.0.1:8538:80"
volumes: volumes:
- ./iframely.config.local.js:/iframely/config.local.js:ro - ./iframely.config.local.js:/iframely/config.local.js:ro
restart: always restart: always

View File

@ -70,19 +70,15 @@ server {
proxy_cache_min_uses 5; proxy_cache_min_uses 5;
} }
location /pictshare/ { location /pictrs/ {
proxy_pass http://0.0.0.0:8537/; proxy_pass http://0.0.0.0:8537/;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
if ($request_uri ~ \.(?:ico|gif|jpe?g|png|webp|bmp|mp4)$) {
add_header Cache-Control "public, max-age=31536000, immutable";
}
} }
location /iframely/ { location /iframely/ {
proxy_pass http://0.0.0.0:8061/; proxy_pass http://0.0.0.0:8538/;
proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host; proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

View File

@ -1,6 +1,31 @@
version: '3.3' version: '3.3'
services: services:
nginx:
image: nginx:1.19-alpine
ports:
- "8536:8536"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- lemmy
- pictrs
- iframely
restart: "always"
lemmy:
build:
context: ../../
dockerfile: docker/dev/Dockerfile
restart: always
environment:
- RUST_LOG=debug
volumes:
- ../lemmy.hjson:/config/config.hjson
depends_on:
- postgres
- iframely
postgres: postgres:
image: postgres:12-alpine image: postgres:12-alpine
environment: environment:
@ -11,34 +36,15 @@ services:
- ./volumes/postgres:/var/lib/postgresql/data - ./volumes/postgres:/var/lib/postgresql/data
restart: always restart: always
lemmy: pictrs:
build: image: asonix/pictrs:amd64-v0.1.0-r9
context: ../../ user: 991:991
dockerfile: docker/dev/Dockerfile
ports:
- "127.0.0.1:8536:8536"
restart: always
environment:
- RUST_LOG=debug
volumes: volumes:
- ../lemmy.hjson:/config/config.hjson - ./volumes/pictrs:/mnt
depends_on:
- postgres
- pictshare
- iframely
pictshare:
image: hascheksolutions/pictshare:latest
ports:
- "127.0.0.1:8537:80"
volumes:
- ./volumes/pictshare:/usr/share/nginx/html/data
restart: always restart: always
iframely: iframely:
image: dogbin/iframely:latest image: dogbin/iframely:latest
ports:
- "127.0.0.1:8061:80"
volumes: volumes:
- ../iframely.config.local.js:/iframely/config.local.js:ro - ../iframely.config.local.js:/iframely/config.local.js:ro
restart: always restart: always

40
docker/dev/nginx.conf vendored Normal file
View File

@ -0,0 +1,40 @@
events {
worker_connections 1024;
}
http {
server {
listen 8536;
server_name 127.0.0.1;
#access_log off;
# Upload limit for pictshare
client_max_body_size 50M;
location / {
proxy_pass http://lemmy:8536;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# WebSocket support
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /pictrs/ {
proxy_pass http://pictrs:8080/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /iframely/ {
proxy_pass http://iframely:80/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}

View File

@ -304,7 +304,7 @@ export class CommentForm extends Component<CommentFormProps, CommentFormState> {
file = event; file = event;
} }
const imageUploadUrl = `/pictshare/api/upload.php`; const imageUploadUrl = `/pictrs/image`;
const formData = new FormData(); const formData = new FormData();
formData.append('file', file); formData.append('file', file);
@ -317,7 +317,7 @@ export class CommentForm extends Component<CommentFormProps, CommentFormState> {
}) })
.then(res => res.json()) .then(res => res.json())
.then(res => { .then(res => {
let url = `${window.location.origin}/pictshare/${res.url}`; let url = `${window.location.origin}/pictrs/${res.url}`;
let imageMarkdown = let imageMarkdown =
res.filetype == 'mp4' ? `[vid](${url}/raw)` : `![](${url})`; res.filetype == 'mp4' ? `[vid](${url}/raw)` : `![](${url})`;
let content = i.state.commentForm.content; let content = i.state.commentForm.content;

View File

@ -518,9 +518,9 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
file = event; file = event;
} }
const imageUploadUrl = `/pictshare/api/upload.php`; const imageUploadUrl = `/pictrs/image`;
const formData = new FormData(); const formData = new FormData();
formData.append('file', file); formData.append('images', file);
i.state.imageLoading = true; i.state.imageLoading = true;
i.setState(i.state); i.setState(i.state);
@ -531,7 +531,7 @@ export class PostForm extends Component<PostFormProps, PostFormState> {
}) })
.then(res => res.json()) .then(res => res.json())
.then(res => { .then(res => {
let url = `${window.location.origin}/pictshare/${encodeURI(res.url)}`; let url = `${window.location.origin}/pictrs/${encodeURI(res.url)}`;
if (res.filetype == 'mp4') { if (res.filetype == 'mp4') {
url += '/raw'; url += '/raw';
} }

View File

@ -988,7 +988,7 @@ export class User extends Component<any, UserState> {
handleImageUpload(i: User, event: any) { handleImageUpload(i: User, event: any) {
event.preventDefault(); event.preventDefault();
let file = event.target.files[0]; let file = event.target.files[0];
const imageUploadUrl = `/pictshare/api/upload.php`; const imageUploadUrl = `/pictrs/image`;
const formData = new FormData(); const formData = new FormData();
formData.append('file', file); formData.append('file', file);
@ -1001,7 +1001,7 @@ export class User extends Component<any, UserState> {
}) })
.then(res => res.json()) .then(res => res.json())
.then(res => { .then(res => {
let url = `${window.location.origin}/pictshare/${res.url}`; let url = `${window.location.origin}/pictrs/${res.url}`;
if (res.filetype == 'mp4') { if (res.filetype == 'mp4') {
url += '/raw'; url += '/raw';
} }