bluesky-social / pds

Bluesky PDS (Personal Data Server) container image, compose file, and documentation
Other
1.38k stars 126 forks source link

The installer has potential to break systems, this is a very bad way of installing this #146

Closed codingneko closed 2 days ago

codingneko commented 2 days ago

A setup script that runs random commands the user has no knowledge of is a VERY bad idea. Please release this as a standalone Docker container that can be reverse proxied to. This script just destroyed half the services I have hosted in my server. Good thing I have backups. Thinking somebody is going to rent a server to host just ONE service is a very unrealistic assumption to make.

I'll basically need to containerize your containers in a new Docker container, so now we have 2 layers of orchestrated containers for something that could be a single container.

codingneko commented 2 days ago

I'll close this issue as it's not really something you're going to fix. Here is what is wrong with this repository and how I would fix it.

What's wrong:

Here is how to fix this issue:

pfaffman commented 2 days ago

Creating an install script that someone who knows nothing can use is hard, and by necessity makes some decisions that people who know anything at all consider very bad. A bunch of stuff is required to make this work, a reverse proxy, certs, so the fact that this works is admirable.

Watchtower, which this uses, pretty much explicitly says that you're a fool to use it in anything resembling a production setup: [quote] Watchtower is intended to be used in homelabs, media centers, local dev environments, and similar. We do not recommend using Watchtower in a commercial or production environment. [/quote]

So if you know what you're doing, this isn't for you, but perhaps someone could spend a few minutes to create a howto guide for people who do know something.

Looks like you can just build a pds.env and crank it up like this:

  pds:
    container_name: pds
    image: ghcr.io/bluesky-social/pds:0.4
    network_mode: host
    restart: unless-stopped
    volumes:
      - type: bind
        source: /pds
        target: /pds
    env_file:
      - /pds/pds.env

You'll need to build a pds.env It's not clear to me if the Right Thing happens on the first run so that the sqlite databases get created, but glancing at the install script, it looks like it must.