Hi, I recently acquired a pretty solid VPS for a good price, and right now I use it to run Caddy for two personal sites. When I moved to Lemmy I found about this awesome community and it got me really interested in selfhosting. I won’t be asking for tips on what to selfhost (but feel free to add what you use), there’s a lot of posts about it to look through, but I was wondering: how are you accessing your selfhosted stuff? I would love to have some sort of dashboard with monitoring and statuses of all my services, so should I just setup WireGuard and then access everything locally? I wanted to have it behind a domain, how would I achieve it? E.g. my public site would be at example.com and my dashboard behind dash.example.com, but only accessible locally through a VPN.

I started to learn Docker when setting up my Caddy server, so I’m still really new to this stuff. Are there any major no-no things a newbie might do with Docker/selfhosting that I should avoid?

I’m really looking forward to setting everything up once I have it planned out, that’s the most fun part for me, the troubleshooting and fixing all the small errors and stuff. So, thank you for your help and ideas, I can share my setup when it’s done.

  • himazawa@infosec.pub
    link
    fedilink
    English
    arrow-up
    2
    ·
    1 year ago

    Don’t expose anything from your local network to the internet (unless you want multiple new sysadmins in your house). Try tailscale instead.

  • CriticalMiss@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    1 year ago

    I have my 22 port opened on IPv6 only and I can only authenticate with my private keys, which are all added in .ssh/authorized_keys. Fail2ban is configured to keep the bots out but the ban log is empty because there are either no bots operating on IPv6 yet or my IP is so far out of reach it will take the bot a millenium to get to my address.

    Some set up WireGuard or another VPN protocol but I like having everything within reach as long as the device I’m carrying has my key on it.

    One thing you should avoid is opening your docker containers to the web. If your VPS isn’t behind a NAT (they usually aren’t) becareful when binding ports which usually bypasses whatever firewall configuration you may have because docker writes it’s changes directly to nftables.

    https://docs.docker.com/network/#published-ports

    Other then that, remember that this is just a hobby (for now) and take a break when something doesn’t work or you don’t understand it. I personally did a lot of mistakes because I was just eager to finish something and I was rushing it.

    • redcalcium@lemmy.institute
      link
      fedilink
      English
      arrow-up
      0
      arrow-down
      1
      ·
      edit-2
      1 year ago

      Accidentally exposing a database port when you deploy a database container has bitten so many asses. ElasticSearch and MongoDB were famous for this, so many databases exposed to the internet without authentication because the owners didn’t know docker can bypass iptables-based firewall when assigning ports and ElasticSearch and MongoDB weren’t ship with authentication enabled back then.

  • cybersandwich@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    1 year ago

    The major think noobs tend to mess up with docker is not setting up volumes properly so when you get rid of the instance, you lose all of your data.

    I also highly recommend docker-compose for ease of use.

    Id recommend looking up security best practices for docker as well. Things like setting a user id & gid for the containers add an additional layer of security.

    Oh and make sure you get your containers from trustworthy sources.

  • axzxc1236@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    1 year ago

    some sort of dashboard with monitoring and statuses of all my services

    See if Uptime Kuma suits your needs.

    Are there any major no-no things a newbie might do with Docker/selfhosting that I should avoid?

    Allow password based SSH authentication, you should look into key based authentication

    I wanted to have it behind a domain, how would I achieve it?

    Use a reverse proxy (like caddy) which serves different content based on domain name.