mirror of
https://github.com/Start9Labs/start-os.git
synced 2026-04-02 05:23:14 +00:00
Copy changes for 040 release (#2874)
* update 040 changelog * remove post_up from 036-alpha6 * backend copy updates * beta.4 * beta.5 * fix spelling --------- Co-authored-by: Aiden McClelland <me@drbonez.dev>
This commit is contained in:
@@ -1,37 +1,50 @@
|
||||
# StartOS v0.3.6
|
||||
# StartOS v0.4.0
|
||||
|
||||
## Warning
|
||||
|
||||
Previous backups are incompatible with v0.3.6. It is strongly recommended that you (1) immediately update all services, then (2) create a fresh backup. See the [backups](#improved-backups) section below for more details.
|
||||
Previous backups are incompatible with v0.4.0. It is strongly recommended that you (1) immediately update all services, then (2) create a fresh backup. See the [backups](#improved-backups) section below for more details.
|
||||
|
||||
## Summary
|
||||
|
||||
Servers are not toys. They are a critical component of the computing paradigm, and their failure can be catastrophic, resulting in downtime or loss of data. From the beginning, Start9 has taken a "security and reliability first" approach to the development of StartOS, favoring soundness over speed and prioritizing essential features such as encrypted network connections, simple backups, and a reliable container runtime over nice-to-haves like custom theming and more apps.
|
||||
A server is not a toy. It is a critical component of the computing paradigm, and its failure can be catastrophic, resulting in downtime or loss of data. From the beginning, Start9 has taken a "security and reliability first" approach to the development of StartOS, favoring soundness over speed, and prioritizing essential features such as encrypted network connections, simple backups, and a reliable container runtime over nice-to-haves like custom theming and more services.
|
||||
|
||||
Start9 is paving new ground with StartOS, trying to achieve what most developers and IT professionals thought impossible; namely, giving a normal person the same independent control over their data and communications as an experienced Linux sysadmin.
|
||||
Start9 is paving new ground with StartOS, trying to create what most developers and IT professionals thought impossible; namely, an OS and user experience that affords a normal person the same independent control over their data and communications as an experienced Linux sysadmin.
|
||||
|
||||
A consequence of our principled approach to development, combined with the difficulty of our endeavor, is that (1) mistakes will be made and (2) they must be corrected. That means a willingness to discard bad ideas and broken parts, and if absolutely necessary, to nuke everything and start over from scratch. We did this in 2020 with StartOS v0.2.0, again in 2022 with StartOS v0.3.0, and now in 2024 with StartOS v0.3.6.
|
||||
The difficulty of our endeavor requires making mistakes; and our integrity and dedication to excellence require that we correct them. This means a willingness to discard bad ideas and broken parts, and if absolutely necessary, to tear it all down and start over. That is exactly what we did with StartOS v0.2.0 in 2020. It is what we did with StartOS v0.3.0 in 2022. And we are doing it now with StartOS v0.4.0 in 2025.
|
||||
|
||||
StartOS v0.3.6 is a complete rewrite of the OS internals (everything you don't see). Almost nothing survived. After nearly five years of building StartOS, we believe that we have finally arrived at the correct architecture and foundation, and that no additional rewrites will be necessary for StartOS to deliver on its promise.
|
||||
v0.4.0 is a complete rewrite of StartOS, almost nothing survived. After nearly six years of building StartOS, we believe that we have finally arrived at the correct architecture and foundation that will allow us to deliver on the promise of sovereign computing.
|
||||
|
||||
## Changelog
|
||||
|
||||
- [Improve user interface](#user-interface)
|
||||
- [Add transaltions](#translations)
|
||||
- [Switch to lxc-based container runtime](#lxc)
|
||||
- [Update s9pk archive format](#s9pk-archive-format)
|
||||
- [Improve Actions](#actions)
|
||||
- [Use squashfs images for OS updates](#squashfs-updates)
|
||||
- [Introduce Typescript package API and SDK](#typescript-sdk)
|
||||
- [Remove Postgresql](#remove-postgressql)
|
||||
- [Enable sending emails via SMTP](#smtp)
|
||||
- [Support SSH password auth](#ssh-password-auth)
|
||||
- [Allow managing Tor addresses](#tor-addresses)
|
||||
- [Implement detailed progress reporting](#progress-reporting)
|
||||
- [Improve registry protocol](#registry-protocol)
|
||||
- [Replace unique .local URLs with unique ports](#lan-port-forwarding)
|
||||
- [Use start-fs Fuse module for improved backups](#improved-backups)
|
||||
- [Switch to Exver for versioning](#exver)
|
||||
- [Support clearnet hosting via start-cli](#clearnet)
|
||||
- [Add clearnet hosting](#clearnet)
|
||||
|
||||
### User interface
|
||||
|
||||
We re-wrote the StartOS UI to be more performant, more intuitive, and better looking on both mobile and desktop. Enjoy.
|
||||
|
||||
### Translations
|
||||
|
||||
StartOS v0.4.0 supports multiple languages and also makes it easy to add more later on.
|
||||
|
||||
### LXC
|
||||
|
||||
StartOS now uses a nested container paradigm based on LXC for the outer container, and using linux namespaces for the inner lite containers. This replaces both Docker and Podman.
|
||||
Replacing both Docker and Podman, StartOS v0.4.0 uses a nested container paradigm based on LXC for the outer container and linux namespaces for sub containers. This architecture naturally support multi container setups.
|
||||
|
||||
### S9PK archive format
|
||||
|
||||
@@ -53,6 +66,18 @@ Package developers can now take advantage of StartOS APIs using the new start-sd
|
||||
|
||||
StartOS itself has miniscule data persistence needs. PostgresSQL was overkill and has been removed in favor of lightweight PatchDB.
|
||||
|
||||
### SMTP
|
||||
|
||||
You can now add your Gmail, SES, or other SMTP credentials to StartOS in order to send deliver email notifications from StartOS and from installed services that support SMTP.
|
||||
|
||||
### SSH password auth
|
||||
|
||||
You can now SSH into your server using your master password. SSH public key authentication is still supported as well.
|
||||
|
||||
### Tor addresses
|
||||
|
||||
StartOS v0.4.0 supports adding and removing Tor addresses for StartOS and all service interfaces. You can even provide your own private key instead of using one auto-generated by StartOS. This has the added benefit of permitting vanity addresses.
|
||||
|
||||
### Progress reporting
|
||||
|
||||
A new progress reporting API enabled package developers to create unique phases and provide real-time progress reporting for actions such as installing, updating, or backing up a service.
|
||||
@@ -75,10 +100,8 @@ StartOS now uses Extended Versioning (Exver), which consists of three parts: (1)
|
||||
|
||||
### Clearnet
|
||||
|
||||
It is now possible, and quite easy, to expose service interfaces to the public Internet on a standard domain using start-cli. In addition to choosing which service interfaces to expose on which domains/subdomains, users have two options:
|
||||
It is now possible (and easy) to expose service interfaces to the public Internet on standard domains. There are two options, both of which are easy to accomplish:
|
||||
|
||||
1. Open ports on their router. This option is free and easy to accomplish with most routers. The drawback is that the user's home IP address is revealed to anyone accessing the exposes resources. For example, hosting a blog in this way would reveal your home IP address, and therefor your approximate location on Earth, to your readers.
|
||||
1. Open ports on your router. This option is free and supported by all routers. The drawback is that your home IP address is revealed to anyone accessing an exposed interface. For example, hosting a blog in this way would reveal your home IP address, and therefore your approximate location, to readers.
|
||||
|
||||
2. Use a Wireguard VPN to proxy web traffic. This option requires the user to provision a $5-$10/month remote VPS and perform a few, simple commands. The result is the successful obfuscation of the users home IP address.
|
||||
|
||||
The CLI-driven clearnet functionality will be expanded upon and moved into the main StartOS UI in a future release.
|
||||
2. Use a Wireguard VPN to proxy web traffic. This option requires provisioning a $5-$10/month VPS and running a one-line script. The result is the successful obfuscation of the users home IP address.
|
||||
@@ -2,7 +2,6 @@ use exver::{PreReleaseSegment, VersionRange};
|
||||
|
||||
use super::v0_3_5::V0_3_0_COMPAT;
|
||||
use super::{v0_3_6_alpha_5, VersionT};
|
||||
use crate::notifications::{notify, NotificationLevel};
|
||||
use crate::prelude::*;
|
||||
|
||||
lazy_static::lazy_static! {
|
||||
@@ -30,25 +29,6 @@ impl VersionT for Version {
|
||||
fn up(self, _db: &mut Value, _: Self::PreUpRes) -> Result<(), Error> {
|
||||
Ok(())
|
||||
}
|
||||
async fn post_up<'a>(self, ctx: &'a crate::context::RpcContext) -> Result<(), Error> {
|
||||
let message_update = include_str!("update_details/v0_3_6.md").to_string();
|
||||
|
||||
ctx.db
|
||||
.mutate(|db| {
|
||||
notify(
|
||||
db,
|
||||
None,
|
||||
NotificationLevel::Success,
|
||||
"Welcome to StartOS 0.3.6!".to_string(),
|
||||
"Click \"View Details\" to learn all about the new version".to_string(),
|
||||
message_update,
|
||||
)?;
|
||||
Ok(())
|
||||
})
|
||||
.await
|
||||
.result?;
|
||||
Ok(())
|
||||
}
|
||||
fn down(self, _db: &mut Value) -> Result<(), Error> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ use imbl_value::json;
|
||||
|
||||
use super::v0_3_5::V0_3_0_COMPAT;
|
||||
use super::{v0_3_6_alpha_18, VersionT};
|
||||
use crate::notifications::{notify, NotificationLevel};
|
||||
use crate::prelude::*;
|
||||
|
||||
lazy_static::lazy_static! {
|
||||
@@ -52,6 +53,25 @@ impl VersionT for Version {
|
||||
});
|
||||
Ok(())
|
||||
}
|
||||
async fn post_up<'a>(self, ctx: &'a crate::context::RpcContext) -> Result<(), Error> {
|
||||
let message_update = include_str!("update_details/v0_4_0.md").to_string();
|
||||
|
||||
ctx.db
|
||||
.mutate(|db| {
|
||||
notify(
|
||||
db,
|
||||
None,
|
||||
NotificationLevel::Success,
|
||||
"Welcome to StartOS 0.4.0!".to_string(),
|
||||
"Click \"View Details\" to learn all about the new version".to_string(),
|
||||
message_update,
|
||||
)?;
|
||||
Ok(())
|
||||
})
|
||||
.await
|
||||
.result?;
|
||||
Ok(())
|
||||
}
|
||||
fn down(self, _db: &mut Value) -> Result<(), Error> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user