I think you’re looking for Debian. If you want newer packages, run testing instead of stable.
Aussie living in the San Francisco Bay Area.
Coding since 1998.
.NET Foundation member. C# fan
https://d.sb/
Mastodon: @dan@d.sb
I think you’re looking for Debian. If you want newer packages, run testing instead of stable.
it’s not “stable”
“stable” in this case means that it doesn’t change often. Debian stable is called that because no major version changes are performed during the entire cycle of a release.
It doesn’t mean “stable” as in “never crashes”, although Debian is good at that too.
Arch is definitely not “stable” using that definition!
Your version is better than OP
I’ve seen many a terrible containerized monolithic app.
I’ve seen plenty of self-hosters complain when an app needs multiple containers, to the point where people make unofficial containers containing everything. I used to get downvoted a LOT on Reddit when I commented saying that separating individual systems/daemons into separate containers is the best practice with Docker.
Docker is still useful even for apps that compile to a single executable, as the app may still depend on a particular environment setup, particular libraries being available, etc.
Are there better alternatives for newbs who just wanna self host stuff?
Docker is great for a beginner, and even for an expert too. I’ve been self-hosting for 20 years and love Docker.
Back in “the old days”, we’d use Linux-VServer to containerize stuff. It was a bit like LXC is today. You get a container that shares the same kernel, and have to install an OS inside it. The Docker approach of having an immutable container and all data stored in separate volumes was a game changer. It makes upgrades so much simpler since it can just throw away the container and build a new one.
The main alternative to Docker is Podman. Podman uses the same images/containers as Docker - technically they’re “OCI containers” and both Docker and Podman implement the OCI spec.
Podman’s architecture is different. The main difference with Podman is that it never runs as root, so it’s better for security. With Docker, you can either run it as root or in rootless mode, but the default is running it as root.
You can use WebAssembly today, but you still need some JS interop for a bunch of browser features (like DOM manipulation). Your core logic can be in WebAssembly though. C# has Blazor, and I wouldn’t be surprised if there’s some Rust WebAssembly projects. I seem to recall that there’s a reimplementation of Flash player that’s built in Rust and compiles to WebAssembly.
Most libraries have TypeScript types these days, either bundled directly with the library (common with newer libraries), or as part of the DefinitelyTyped project.
Use TypeScript, and nonsensical things like adding arrays to objects will be compile-time errors.
I’m starting to like the htmx model a lot. Server-rendered app that uses HTML attributes to configure the dynamic bits (e.g. which URL to hit and which DOM element to insert the response into). Don’t have to write much JS (or any in some cases).
you literally can’t hyperlink to any of the data
I thought most React-powered frameworks use a URL router out-of-the-box these days? The developer does need to have a rough idea what they’re doing, though.
I remember WS_FTP LE leaving log files everywhere. What a pain to clean up.
For some of my sites, I still build on my PC and rsync the build directory across. I’ve been meaning to set up Gitlab or something similar and configure automated deployments.
That’s one nice thing about Java. You can bundle the entire app in one .jar or .war file (a .war is essentially the same as a .jar but it’s designed to run within a Servlet container like Tomcat).
PHP also became popular in the PHP 4.x era because it had a large standard library (you could easily create a PHP site with no third-party libraries), and deployment was simply copying the files to the server. No build step needed. Classic ASP was popular before it, and also had no build step. but it had a very small standard library and relied heavily on COM components which had to be manually installed on the server.
PHP is mostly the same today, but these days it’s JIT compiled so it’s faster than the PHP of the past, which was interpreted.
FTP isn’t really used much any more. SFTP (file transfers over SSH) mostly took over, and people that want to sync a whole directory to the server usually use rsync these days.
No, because there’s use cases for systems that aren’t connected to the internet. Also, public IPs can be dynamic, so you might not want to rely on them internally.
Note that Android doesn’t support DHCPv6, just in case you have Android devices and ever have to debug IPv6 on them.
Yeah I’m not using NAT, sorry for the confusion.
My router doesn’t support RAs for a ULA range though, so I’m running radvd on my home server.
Debian gives you a choice though. If you want stability, install the stable release. If you want newer packages, install the testing release. Just be sure to get security updates from unstable (sid) if you do that.
“stable” in this context means that stuff doesn’t change often. It doesn’t mean “stable” as in reliable / never crashes, although Debian is good at that too.