

- Mail with all the bells and whistles (been there, done that – but I just want this to work and not care about details).
- Dynamic DNS because I just need to tell someone my non-static IP so they can connect that with my domain name.
Somewhere between Linux woes, gaming, open source, 3D printing, recreational coding, and occasional ranting.
🇬🇧 / 🇩🇪
Thanks! I just prefer simple UIs.
(Screenshots resized due to not wasting too much space.
Here’s a small one of how a website would look like.
Here’s a larger one of how my new tab page looks like (including multiple tabs to show how the tab bar looks like).
// Enable userChrome.css
user_pref('toolkit.legacyUserProfileCustomizations.stylesheets', true);
// Warnings
user_pref('browser.aboutConfig.showWarning', false);
// Style
user_pref('browser.tabs.inTitlebar', 0);
user_pref('browser.theme.content-theme', 1);
user_pref('browser.theme.toolbar-theme', 1);
// Extensions
user_pref('extensions.activeThemeID', 'firefox-compact-light@mozilla.org');
user_pref('extensions.pocket.enabled', false);
user_pref('extensions.screenshots.disabled', true);
user_pref('extensions.getAddons.showPane', false);
user_pref('extensions.htmlaboutaddons.recommendations.enabled', false);
// Zoom
user_pref('toolkit.zoomManager.zoomValues', '.5,.3,1,1.2,1.3,1.5');
user_pref('devtools.toolbox.zoomValue', '1.4');
user_pref('browser.zoom.siteSpecific', false);
// Privacy
//
// Basically do not leak URLs, IPs, etc. to external services
user_pref('browser.safebrowsing.malware.enabled', false);
user_pref('browser.safebrowsing.phishing.enabled', false);
user_pref('security.OCSP.enabled', 0);
user_pref('browser.contentblocking.category', 'custom');
user_pref('app.shield.optoutstudies.enabled', false);
user_pref('browser.urlbar.trending.featureGate', false);
// DoH explicitly off
user_pref('network.trr.mode', 5);
user_pref('network.trr.default_provider_uri', '');
// Cookies
user_pref('network.cookie.cookieBehavior', 2);
// AdBlock
user_pref('browser.newtabpage.activity-stream.showSponsoredTopSites', false);
user_pref('browser.newtabpage.activity-stream.feeds.section.topstories', false);
user_pref('browser.newtabpage.activity-stream.feeds.topsites', false);
// Remove weird URLS
user_pref('toolkit.shopping.ohttpConfigURL', '');
user_pref('toolkit.shopping.ohttpRelayURL', '');
user_pref('browser.partnerlink.attributionURL', '');
user_pref('browser.privatebrowsing.vpnpromourl', '');
// Do not track
user_pref('privacy.trackingprotection.enabled', false);
user_pref('privacy.trackingprotection.emailtracking.enabled', false);
user_pref('privacy.trackingprotection.socialtracking.enabled', false);
user_pref('privacy.trackingprotection.cryptomining.enabled', false);
user_pref('privacy.trackingprotection.fingerprinting.enabled', false);
user_pref('privacy.donottrackheader.enabled', true);
// Beahvior
user_pref('general.smoothScroll', false);
user_pref('signon.autofillForms', true);
user_pref('signon.firefoxRelay.feature', 'disabled');
user_pref('browser.download.manager.addToRecentDocs', false);
user_pref('security.tls.version.min', 1);
user_pref('browser.profiles.enabled', false);
// UI features
//
// https://github.com/yokoffing/Betterfox/blob/main/user.js
user_pref('browser.discovery.enabled', false);
user_pref('browser.shell.checkDefaultBrowser', false);
user_pref('browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons', false);
user_pref('browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features', false);
user_pref('browser.preferences.moreFromMozilla', false);
user_pref('browser.tabs.tabmanager.enabled', false);
user_pref('browser.aboutConfig.showWarning', false);
user_pref('browser.aboutwelcome.enabled', false);
user_pref('browser.uidensity', 0);
user_pref('browser.urlbar.trimURLs', false);
user_pref('browser.urlbar.showSearchTerms.enabled', false);
// Telemetry
//
// https://github.com/yokoffing/Betterfox/blob/main/user.js
user_pref('datareporting.policy.dataSubmissionEnabled', false);
user_pref('datareporting.healthreport.uploadEnabled', false);
user_pref('toolkit.telemetry.unified', false);
user_pref('toolkit.telemetry.enabled', false);
user_pref('toolkit.telemetry.server', 'data:,');
user_pref('toolkit.telemetry.archive.enabled', false);
user_pref('toolkit.telemetry.newProfilePing.enabled', false);
user_pref('toolkit.telemetry.shutdownPingSender.enabled', false);
user_pref('toolkit.telemetry.updatePing.enabled', false);
user_pref('toolkit.telemetry.bhrPing.enabled', false);
user_pref('toolkit.telemetry.firstShutdownPing.enabled', false);
user_pref('toolkit.telemetry.coverage.opt-out', true);
user_pref('toolkit.coverage.opt-out', true);
user_pref('toolkit.coverage.endpoint.base', '');
user_pref('browser.ping-centre.telemetry', false);
user_pref('browser.newtabpage.activity-stream.feeds.telemetry', false);
user_pref('browser.newtabpage.activity-stream.telemetry', false);
user_pref('breakpad.reportURL', '');
user_pref('browser.tabs.crashReporting.sendReport', false);
user_pref('browser.crashReports.unsubmittedCheck.autoSubmit2', false);
user_pref('app.shield.optoutstudies.enabled', false);
user_pref('app.normandy.enabled', false);
user_pref('app.normandy.api_url', '');
// Disable AI bullshit
//
user_pref('browser.ml.enable', false);
user_pref('browser.ml.chat.enabled', false);
user_pref('browser.ml.chat.shortcuts', false);
user_pref('browser.ml.chat.sidebar', false);
user_pref('pdfjs.enableAltText', false);
user_pref('pdfjs.enableUpdatedAddImage', false);
and
@namespace url("http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul");
/* Tabs styling */
#TabsToolbar {
background-color: #cccccc !important;
--toolbarbutton-inner-padding: 0 !important;
}
.tabbrowser-tab {
padding: 0 !important;
}
.tab-background {
margin: 0 !important;
border-radius: 0 !important;
background-color: var(--toolbar-bgcolor) !important;
box-shadow: none !important;
}
#alltabs-button {
display: none !important;
}
#tabbrowser-tabs {
min-height: unset !important;
}
/* secondary label indicators */
@font-face {
/* copy font file to same directory as this CSS file */
font-family: 'SymbolsNerdFont';
src: url('SymbolsNerdFont.ttf') format('truetype');
}
.tab-secondary-label {
display: none;
}
.tab-text::before {
font-family: SymbolsNerdFont;
padding-right: 0.25em;
}
.tabbrowser-tab[soundplaying] .tab-text::before { content: ''; }
.tabbrowser-tab[muted] .tab-text::before { content: ''; }
.tabbrowser-tab[activemedia-blocked] .tab-text::before { content: ''; }
/* unselected tabs */
.tab-background:not([selected]),
.tab-icon-image:not([selected]) {
opacity: 0.4 !important;
}
.tab-text:not([selected]) {
color: #555753 !important;
}
#tabbrowser-arrowscrollbox {
min-height: var(--tab-min-height) !important;
max-height: var(--tab-min-height) !important;
}
scrollbox[part="scrollbox"] {
gap: 2px;
}
and
/* Style about:home and about:newtab */
@-moz-document url-prefix(about:home), url-prefix(about:newtab) {
.logo-and-wordmark {
background-image: url(REPLACE_ME_WITH_YOUR_FAVORITE_IMAGE.jpg);
background-size: cover;
background-position: center;
aspect-ratio: 16/9;
border-radius: 1em;
position: relative;
width: auto;
height: auto;
max-width: 80%;
max-height: 60vh;
margin: 0 auto;
}
.logo-and-wordmark .logo {
display: none !important;
}
.logo-and-wordmark .wordmark {
position: absolute;
right: 2em;
bottom: 0.5em;
--newtab-wordmark-color: #eb8819;
}
}
So … Basically just another preconfigured Firefox with extensions?
I’m going to voluntarily read other people’s AI slop.
The IPv6 range is barely even used.
Yet.
Also I imagine that there will be a secondary market for IPv6 at some point.
Like there already is one for IPv4 addresses?
I stand by my point:
No-one will ever need a /48 range.
The ranges will become larger over time because “we have it”, and companies will get thousands of sections with figuratively unlimited IP addresses in them each.
With this huge ranges we’ll have the same problem with IPv6 in a few years that we already have with IPv4.
They not only force their user to buy their crap, they also intentionally and maliciously frame the AGPL in a certain way.
Spicy Pillow!
I did not, but of course you can. Either by using an adapter (maybe a printable one?), or – if it is an SSD – by just placing the drive there and hld it in place with one screw.
If there already is a drive installed you want to removed and there is no spare cover, you can also print one.
(You can of course buy the parts instead of printing them. Those adapters and covers are fully standardized and widely available.)
You can create communities only on your own instance. For you that would be this link.
Do you get any error messages?
They do it since quite some time now, right?
but I’d like to give Nginx Proxy Manager a try, it seems easier to manage stuff not in docker.
NPM is pretty agnostic. If it receives a request for a specific address and port combination it just forwards the traffic to another specific address and port combination. This can be a docker container, but also can be a physical machine or any random URL.
It also has Let’s Encrypt included (but that should be a no-brainer).
I run my website as static site from within a Docker container, I wonder how I would get the information about the other containers into that site.
Do you directly serve that site from the host or do you run the script and write something in a volume the site has read access to or bind a file?
Do you guys have any suggestions?
Because I don’t like software getting in my way I just cobbled together some HTML and CSS and call it a day.
Usually you just see LibreOffice and nothing else, so it’s fine, I guess. Not a web-based editor, but usable.
Ah, I see. Not as native web application, though.
They’re using Alpine Linux, install X and Openbox and Xvnc and serve KasmVNC via Nginx and connect via KasmVNC to that X instance. LibreOffice is started in fullscreen and looks like a slightly blurry web application.
But in reality it is just a regular desktop installation with some extra things.
@fikran@lemm.ee, maybe this is a solution? I wouldn’t recommend it because it’s not really a web-based document editor.
So, LibreOffice can be used over the Internet in a web browser?