AnonymousDeity

joined 1 year ago
[–] AnonymousDeity@beehaw.org 9 points 1 year ago

Hey they promised to cut the PST though! That 1% buys me uh.... uhhhhh.... a whole extra coffee every so often!

[–] AnonymousDeity@beehaw.org 9 points 1 year ago (1 children)

I'm from small town VT just across the river, and while that hasn't been my personal experience I absolutely have known people who have had that experience. Small town USA is unbelievably messed up, but everyone likes to act like its only in the cities. Felt like half my town was Section 8, and an actual full 10th of the population was from the county jail on furlough. Since I've left, violent crime/murder rate has gone up a lot and heavy drug use is rampant.

I'm sorry dude.

[–] AnonymousDeity@beehaw.org 1 points 1 year ago

ah, yeah, that's why. You need to mount the unix socket into Caddy's container as a volume. Docker uses overlayfs by default to create a layered filesystem, and then launches a distinct user, process, network, etc. namespace for the container's process, which is why everything is isolated inside the container. You'll need to make sure the unix socket is available to Caddy's process inside the container, so you'll have to mount it using -v or the volume key in the yaml.

sudo is actually entirely unnecessary with Docker, because most containers will run as the container's root. Part of containers having their own user and process namespace means their root user is not your root user (technically we can have a debate about semantics for overlayfs and mounted files), and almost all images will ship with the default user as their root. Therefore, almost all processes will be "run as root" from within their container by default, meaning sudo does nothing except elevate the perms for the user calling docker. It would really only get around an issue with your user account not having access to docker or the docker daemon (also via socket btw). That said, because of the user namespace thing, running sudo docker run or sudo docker compose up doesn't actually guarantee the process in the container is run as root... just that the container was created as root with perms over the host's system.

The important part is that Caddy inside the container will be run by a user that has permissions over the mounted socket.

[–] AnonymousDeity@beehaw.org 1 points 1 year ago

nginx just has a lower barrier to entry (imo) if you're not looking to sign your own certs. Caddy is great for that.

That said, I didn't know Caddy had a beta feature for serving Tailscale certs automatically. So I incorrectly thought you were barking up the completely wrong tree, which you apparently are not. I'll look at your tech details more.

[–] AnonymousDeity@beehaw.org 1 points 1 year ago* (last edited 1 year ago) (2 children)

{"level":"error","ts":1691499478.2793655,"logger":"tls.handshake","msg":"getting certificate from external certificate manager","remote_ip":"100

.125.48.40","remote_port":"60140","sni":"machine.domain.ts.net","cert_manager":0,"error":"Get "http://local-tailscaled.sock/localapi/v0/cert/vaulty.tail

a5148.ts.net?type=pair": dial unix /var/run/tailscale/tailscaled.sock: connect: no such file or directory"}

This is your main issue - looks like Caddy can't access the tailscale socket in order to serve their TLS cert. check you're running caddy>2.5, check the socket exists and check the user running the caddy process has access to it. docs

Are you running Caddy with docker?

[–] AnonymousDeity@beehaw.org 1 points 1 year ago* (last edited 1 year ago) (2 children)

~~I read your comment in more detail, you're going down the wrong path. What you're looking for cannot function the way you want the way you want to achieve it, and may not even make sense to want.~~ I am wrong, I didn't realize Caddy could just serve their cert over the socket. What user is the caddy process on your VM being run as?

If you want to use Tailscale DNS, you can use their TLS cert (assuming it gives a valid cert for machine.domain.ts.net) and just reverse proxy HTTP traffic with nginx on the VPS/VM (assuming nginx can listen on their network device. I've fought with that with openresty before, but that may be because I was trying to host it in another docker container lol).

[–] AnonymousDeity@beehaw.org 1 points 1 year ago* (last edited 1 year ago) (7 children)

But, the connection is unsecured over HTTP. I’d like to take it a step further in order to make the connections go over HTTPS.

Why? You're already VPN'd into a machine you control via tailscale. Protecting the specific application TCP traffic with TLS is kind of redundant at that point. If you really care, just use nginx not Caddy because this will never work using Tailscale DNS, self sign a cert for your Tailscale domain and use nginx to serve traffic on the Tailscale network device.

Also, use docker compose. This will feed DNS records into the containers' /etc/hosts file as well as put the containers on their own network so the main containers won't be exposed directly, only caddy.

docker-compose.yml

version: "3.4"
services:
  caddy:
    container_name: caddy
    image: ghcr.io/authp/authp:latest  # I use authp for OAuth authentication instead of VPN-only access
    restart: unless-stopped
    ports:
      - 443:443
      - 443:443/udp
      - 80:80
    volumes:
      - ${ROOT}/config/caddy/Caddyfile:/etc/caddy/Caddyfile
      - ${ROOT}/config/caddy/data:/data/
    dns:
      - 1.1.1.1  # set these to your local DNS if you have one, I run pihole
      - 8.8.8.8
      - 8.8.4.4
  whoami:
    container_name: whoami
    depends_on:
      - caddy
    image: containous/whoami
    restart: unless-stopped

~~Caddyfile~~

{
	http_port 80
	https_port 443
}

whoami.example.com{
    reverse_proxy whoami:80
}

As you can see the Caddyfile directs the Caddy container to reverse proxy whoami.example.com to http://whoami:80, which uses the /etc/hosts entry that docker-compose inserts for whoami to the whoami container's Docker IP address. In this scheme, only Caddy needs to have a port listening on the host machine. Assuming Caddy can access your tailscale network, this will work - for that. (although I worry that Tailscale mounts the network device as a unix socket, which may complicate matters - I ran into this when trying some bullshit with nginx/openresty)

~~The issue that you're having in your logs is that you're trying to get Caddy to get a TLS cert for machine.domain.ts.net, which will never work, because machine.domain.ts.net is not a globally recognized DNS record - it's a split zone DNS for within the Tailscale network exclusively. LetsEncrypt needs to be able to prove you own machine.domain.ts.net in order to issue a cert for it, meaning it needs to be able to resolve the domain and chat with Caddy. Since LetsEncrypt isn't on your Tailscale network, it cannot do this.~~

[–] AnonymousDeity@beehaw.org 1 points 1 year ago* (last edited 1 year ago) (1 children)

I mean I'm sure Lemmy's server process is stateless, I'm sure it could use CloudRun/ECS pretty efficiently and that wouldn't really require a rewrite (unless the process is stateful for some reason)

[–] AnonymousDeity@beehaw.org 7 points 1 year ago

!enoughmuskspam already exists somewhere I think

[–] AnonymousDeity@beehaw.org 0 points 1 year ago (3 children)

they'll what now?

[–] AnonymousDeity@beehaw.org -1 points 1 year ago

almost totally-equal redistribution of land among the peasantry

History isn't your strong suit, is it?

Ah well, the current oligarchic state of China is totally unrelated to the system that created it, and instead is a bastardization of "true" communism, right?

view more: next ›