With `no-c-deps` enabled microbin can be compiled for aarch64 by simply
passing in `--no-default-features`, `--no-c-deps` & `--target
aarch64-unknown-linux-musl`. The resulting binary is fully static and
does *not* depend on glibc. Therefore it can be deployed to any linux
target running an aarch64 cpu (arm). There is no need for any
containers.
There where four obstactles to easily statically linking microbin
with musl.
- The syntect library depended on the onigura regex engine. With
`no-c-deps` it uses `fancy-regex` a slower alternative fully written
in rust.
- Dependency actix-web supported zstd compression requiring the system
zstd library to be present.
- The rusqlite library build and linked the C-library sqlite. That needs
a crosscompiler and various crosscompile packages. With `no-c-deps`
enabled the sqlite db option is disabled and the -json-db arg must be
used. If the user does not pass -json-db microbin will panic when
starting with a clear error message.
- reqwest was using openssl for reporting telemetry and checking for new
versions. With `no-c-deps` it uses rustls with crypto provider
rustcrypto. While rustcrypto has not been formally verified it should
be good enough for sending telemetry (which should not contain any
secure/personal data anyway) and checking versions.
- Implemented configuration telemetry
- Added option to disable version checking
- Updated URL for versioning and telemetry endpoint
- Added option to opt-in for a public MicroBin server list in the future
By parsing some json served by the MicroBin website, MicroBin can now check whether there is a newer version out there, and display the update information on the admin screen.
This is the first, early beta version of Microbin 2.
Microbin 2 brings a lot of improvements to Microbin. To name just the most important ones:
- Server-side and client-side encryption for uploads, including file attachments,
- SQLite database support by default,
- Reworked upload settings, 5 privacy levels,
- New administrator console (/admin),
- Automatic syntax highlighting,
- Image and video embedding,
- Refreshed styling and QoL features,
- New user guide page.
Beyond these,
- Added file upload size limits,
- Added sample .env file with description for each environmental variable,
- Removed Info page (moved to admin page),
- Pasta list now sorted from newer to older,
- Pasta terminology replaced with Upload,
- Files are now served with a proper service, not just as a public directory,
- Pastas are now stored in /attachments instead of /public.
As this is the first beta of Microbin v2, and I do not recommend updating to this in critical environments as long as we are in beta stage. I expect many bugs to emerge and v2 is also getting a few more smaller QoL features from the backlog. README and website won't be updated until v2 is stable and well-tested.
Fixes#164Fixes#156Fixes#153Fixes#149Fixes#139Fixes#98Fixes#4Fixes#105 (sort of)
Fixes#97 (sort of)
Fixes#45 (sort of)
Fixes#22 (sort of)
- improved support for serving static resources from the binary, now supporting images
- added new logo
- changed save button
- fixed footer attribution text, it is not true anymore that MicroBin is made by myself
- replaced footer GitHub link with microbin.eu link
- Implements #7
- Implements #42 and therefore #64
- Improved #53
- Implements #59
- Implements #61
- Implements #63
- Implements #80
- Implements #84
- Added Info page
- Removed Help page
- Bumped version number to 1.2.0
- Fixed a bug where wide mode was still 720px wide
- Created FUNDING.yml
- Reorganised arguments in README.MD and documented new options
- Updated SECURITY.MD
- Added display of last read time and read count
- Increased default width to 800px to make UI less cluttered
- Reorganised index page
- New, better attach file button
I want to spend some time testing these changes and let everyone have a look at them before tagging and releasing new artifacts.