this post was submitted on 28 Nov 2023
2 points (100.0% liked)

Self-Hosted Main

502 readers
4 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

For Example

We welcome posts that include suggestions for good self-hosted alternatives to popular online services, how they are better, or how they give back control of your data. Also include hints and tips for less technical readers.

Useful Lists

founded 1 year ago
MODERATORS
 

all the cloud apps ive seen advertize "easy installs" but i end up with 30 different problems i cant solve, is there any cloud apps that i can just easily install on my linux mint (ubuntu) server without issues?

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 1 points 9 months ago

Your whole life becomes much simpler when you use docker.

Elevator pitch: Docker containers are preconfigured services which run isolated from the rest of your system and only expose individual directories you map into the container. These directories are the persistence part of the application and survive a restart of the container or the host system. Just backup your scripts and the data directories and you have backed up your entire server.

I have a few scripts as examples. 'cd "$(dirname "$0")"' changes to the directory the script is stored in, and therefore will create and map data directories from that parent directory.

Letsencrypt proxy companion will set up a single listener for web and ssl traffic, setup virtual hosts automatically, and setup SSL, all with automations.

First, you need letsencrypt nginx proxy companion:

#!/bin/bash

cd "$(dirname "$0")"

docker run --detach
--restart always
--name nginx-proxy
--publish 80:80
--publish 443:443
--volume $(pwd)/certs:/etc/nginx/certs
--volume $(pwd)/vhost:/etc/nginx/vhost.d
--volume $(pwd)/conf:/etc/nginx/conf.d
--volume $(pwd)/html:/usr/share/nginx/html
--volume /var/run/docker.sock:/tmp/docker.sock:ro
--volume $(pwd)/my_proxy.conf:/etc/nginx/conf.d/my_proxy.conf:ro
--volume $(pwd)/nginx.conf:/etc/nginx/nginx.conf:ro
--volume $(pwd)/acme:/etc/acme.sh
jwilder/nginx-proxy

docker run --detach
--restart always
--name nginx-proxy-letsencrypt
--volumes-from nginx-proxy
--volume /var/run/docker.sock:/var/run/docker.sock:ro
--env "DEFAULT_[email protected]"
jrcs/letsencrypt-nginx-proxy-companion

Then for each service, you can start with a docker command as well with a few extra environment variables. Here is one for nextcloud:

docker run -d \

--name nextcloud
--hostname cloud.MYDOMAIN.COM
-v $(pwd)/data:/var/www/html
-v $(pwd)/php.ini:/usr/local/etc/php/conf.d/zzz-custom.ini
--env "VIRTUAL_HOST=cloud.MYDOMAIN.COM"
--env "LETSENCRYPT_HOST=cloud.MYDOMAIN.COM"
--env "VIRTUAL_PROTO=http"
--env "VIRTUAL_PORT=80"
--env "OVERWRITEHOST=cloud.MYDOMAIN.COM"
--env "OVERWRITEPORT=443"
--env "OVERWRITEPROTOCOL=https"
--restart unless-stopped
nextcloud:25.0.0

And Plex (/dev/dri is quicksync for hardware transcode):

docker run \
--device /dev/dri:/dev/dri \
--restart always \
-d \
--name plex \
--network host \
-e TZ="America/Chicago" \
-e PLEX_CLAIM="claim-somerandomcharactershere" \
-v $(pwd)/config:/config \
-v /my/media/directory/on/host/system:/media \
plexinc/pms-docker

Obsidian:

docker run --rm -d \

--name obsidian
-v $(pwd)/vaults:/vaults
-v $(pwd)/config:/config
--env "VIRTUAL_HOST=obsidian.MYDOMAIN.COM "
--env "LETSENCRYPT_HOST=obsidian.MYDOMAIN.COM "
--env "VIRTUAL_PROTO=http"
--env "VIRTUAL_PORT=8080"
ghcr.io/sytone/obsidian-remote:latest