<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://replica.wiki.extremist.software/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pml</id>
	<title>Noisebridge - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://replica.wiki.extremist.software/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Pml"/>
	<link rel="alternate" type="text/html" href="https://replica.wiki.extremist.software/wiki/Special:Contributions/Pml"/>
	<updated>2026-04-05T15:48:35Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.13</generator>
	<entry>
		<id>https://replica.wiki.extremist.software/index.php?title=Unicorn&amp;diff=73187</id>
		<title>Unicorn</title>
		<link rel="alternate" type="text/html" href="https://replica.wiki.extremist.software/index.php?title=Unicorn&amp;diff=73187"/>
		<updated>2021-07-26T02:32:41Z</updated>

		<summary type="html">&lt;p&gt;Pml: /* SSH Access */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
Unicorn is a homage to our long dead server, formerly known as [[Stallion]].&lt;br /&gt;
It has no guaranteed uptime or functionality; it is up to you to keep the services you want running, running. Like a stallion. &amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Pissingponynb.png]]&lt;br /&gt;
&lt;br /&gt;
This utility server is 4 cores, 24gb ram, 120gb ssd storage and 12tb bandwidth. &amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Volunteers warmly encouraged to setup and maintain it!  Please contact us via the main [https://lists.noisebridge.net/listinfo/noisebridge-discuss Noisebridge Discussion Mailing List] or on our [https://discuss.noisebridge.info Discuss forum]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Services ==&lt;br /&gt;
&lt;br /&gt;
Unicorn currently hosts:&lt;br /&gt;
&lt;br /&gt;
* [https://noisebridge.info/ https://noisebridge.info/] - Unicorn homepage&lt;br /&gt;
&lt;br /&gt;
* [https://status.noisebridge.info/ https://status.noisebridge.info/] - [https://sourcegraph.github.io/checkup/ Checkup] is [https://github.com/sourcegraph/checkup a status page] and associated service that notifies us in Slack if one of our services go down!  [https://tryingtobeawesome.com/checkup/ Blog post describing setup] is located here.&lt;br /&gt;
** To add new health checks for other services, edit &amp;lt;code&amp;gt;/home/noisebridge/services/checkup/checkup.json&amp;lt;/code&amp;gt;.  [https://github.com/noisebridge/config/blob/master/checkup.json See the configuration file here on our GitHub].&lt;br /&gt;
&lt;br /&gt;
* [https://mt.noisebridge.info:30000 https://mt.noisebridge.info:30000] - [https://www.minetest.net/ MineTest] is a fully open variant of Minecraft!  Join us and enjoy.&lt;br /&gt;
&lt;br /&gt;
* [https://minio.noisebridge.info/ https://minio.noisebridge.info/] - [https://minio.io/ Minio] instance (S3-compatible storage)&lt;br /&gt;
** Ask @elimisteve or [[User:James|@James]] for the auth keys needed for login&lt;br /&gt;
&lt;br /&gt;
* [https://doc.noisebridge.info https://doc.noisebridge.info] - [https://github.com/hedgedoc/hedgedoc HedgeDoc] is a [[Doc|collaborative document]] editor formerly known as CodiMD&lt;br /&gt;
&lt;br /&gt;
* [https://discuss.noisebridge.info/ https://discuss.noisebridge.info/] - [https://www.discourse.org/ Discourse] instance (discussion forums)&lt;br /&gt;
&lt;br /&gt;
* [https://mumble.noisebridge.info/ https://mumble.noisebridge.info/] - [https://www.mumble.info/ Mumble] Audio chat over VOIP. Scales easily to hundreds of users.&lt;br /&gt;
&lt;br /&gt;
* [https://gossip.noisebridge.info/ https://gossip.noisebridge.info/] - [https://www.scuttlebutt.nz/ Secure Scuttlebutt] - asynchronous p2p network. Details on our [[Pub]] wiki page.&lt;br /&gt;
&lt;br /&gt;
* [https://bridge.noisebridge.info/ https://bridge.noisebridge.info/] - [https://github.com/RSS-Bridge/rss-bridge RSS-Bridge] converts arbitrary websites into RSS &amp;amp; Atom feeds. [[RSSbridge| See our wiki page]].&lt;br /&gt;
** You may [https://github.com/RSS-Bridge/rss-bridge/wiki/Whitelisting white list] new entries at &amp;lt;code&amp;gt;/home/noisebridge/data/rss-bridge/whitelist.txt&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* [https://test-discuss.noisebridge.info https://test-discuss.noisebridge.info] - testing instance of Discourse so we can mess with upgrades and plugins.&lt;br /&gt;
&lt;br /&gt;
* [https://chat.noisebridge.info/ https://chat.noisebridge.info/] - [https://rocket.chat/ Rocket.chat] instance (to replace our Slack!)&lt;br /&gt;
&lt;br /&gt;
* [https://leapchat.noisebridge.info/ https://leapchat.noisebridge.info/] - [https://www.leapchat.org/ LeapChat] instance (ephemeral encrypted Slack in your browser!)&lt;br /&gt;
** Visit [https://leapchat.noisebridge.info/ https://leapchat.noisebridge.info/] -&amp;gt; Get redirected to new end-to-end encrypted room&lt;br /&gt;
** Messages disappear after 90 days&lt;br /&gt;
** Was largely built at Noisebridge, by @elimisteve and other volunteers&lt;br /&gt;
** Contribute here (AGPLv3): [https://github.com/cryptag/leapchat https://github.com/cryptag/leapchat]&lt;br /&gt;
&lt;br /&gt;
* [https://projects.noisebridge.info https://projects.noisebridge.info] - [https://secure.phabricator.com/ Phabricator] for management of Git, Mercurial, Subversion.&lt;br /&gt;
&lt;br /&gt;
* [https://login.noisebridge.info https://login.noisebridge.info] - basic SSO for guarding services w/o their own account system (uses the Noisebridge Slack as the identity provider)&lt;br /&gt;
&lt;br /&gt;
* [https://printprintprint.noisebridge.info https://printprintprint.noisebridge.info] - remote access to the OctoPrint instance driving our Creality CR-10 3D printer&lt;br /&gt;
&lt;br /&gt;
* [https://space.noisebridge.info space.noisebridge.info] - experimental virtualized www edition of nbsp by Ⅹ&lt;br /&gt;
&lt;br /&gt;
* [https://x.noisebridge.info x.noisebridge.info] - experimental personal site for Ⅹ&lt;br /&gt;
&lt;br /&gt;
* [https://share.noisebridge.info share.noisebridge.info] - Next Cloud VM instance setup by James &amp;amp; Ⅹ&lt;br /&gt;
&lt;br /&gt;
== System Info ==&lt;br /&gt;
&lt;br /&gt;
* Homepage URL: [https://noisebridge.info noisebridge.info]&lt;br /&gt;
&lt;br /&gt;
* IP: &amp;lt;code&amp;gt;172.93.55.252&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* OS: Debian 10 Buster x86_64&lt;br /&gt;
&lt;br /&gt;
* Web server: Nginx is running on ports 80 and 443&lt;br /&gt;
&lt;br /&gt;
* Domains: Current domains and subdomains hosted on this server: (see &amp;lt;code&amp;gt;/etc/nginx/sites-enabled/*&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
* DNS: all &amp;lt;code&amp;gt;*.noisebridge.info&amp;lt;/code&amp;gt; subdomains point to this server, as does the naked domain (&amp;lt;code&amp;gt;noisebridge.info&amp;lt;/code&amp;gt;)&lt;br /&gt;
&lt;br /&gt;
* SSL: certbot runs every day to renew certs for all (sub)domains it knows about&lt;br /&gt;
** ...but to manually renew, run &amp;lt;code&amp;gt;/home/noisebridge/bin/recert; sudo service nginx restart&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* To add a new service at, say, &amp;lt;code&amp;gt;somethingcool.noisebridge.info&amp;lt;/code&amp;gt;...&lt;br /&gt;
** Create a file similar to &amp;lt;code&amp;gt;/etc/nginx/sites-available/noisebridge.info&amp;lt;/code&amp;gt; called &amp;lt;code&amp;gt;/etc/nginx/sites-available/somethingcool.noisebridge.info&amp;lt;/code&amp;gt;&lt;br /&gt;
** Run &amp;lt;code&amp;gt;sudo ln -s /etc/nginx/sites-available/somethingcool.noisebridge.info /etc/nginx/sites-enabled/somethingcool.noisebridge.info; sudo nginx -t&amp;lt;/code&amp;gt;&lt;br /&gt;
** If you don&#039;t get any errors, add &amp;lt;code&amp;gt;-d somethingcool.noisebridge.info&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;/home/noisebridge/bin/recert&amp;lt;/code&amp;gt; then run &amp;lt;code&amp;gt;/home/noisebridge/bin/recert&amp;lt;/code&amp;gt; to (U)pdate the &amp;lt;code&amp;gt;*.noisebridge.info&amp;lt;/code&amp;gt; SSL cert!&lt;br /&gt;
&lt;br /&gt;
* Unicorn uses [https://wiki.ubuntu.com/UncomplicatedFirewall ufw] to whitelist which ports can receive incoming connections from the outside world.&lt;br /&gt;
** To add a port to the whitelist: &amp;lt;code&amp;gt;sudo ufw allow &amp;lt;port&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** To list firewall rules: &amp;lt;code&amp;gt;sudo ufw show added&amp;lt;/code&amp;gt;&lt;br /&gt;
** To delete a firewall rule: &amp;lt;code&amp;gt;sudo ufw delete &amp;lt;rule&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
** To view (and delete) rules chronologically rather than by port: &amp;lt;code&amp;gt;sudo ufw status numbered&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Rules and Guidelines ==&lt;br /&gt;
&lt;br /&gt;
* Be excellent to each other&lt;br /&gt;
** Don&#039;t fuck up other people&#039;s shit&lt;br /&gt;
&lt;br /&gt;
* Usage of containers is encouraged where practical, but not required&lt;br /&gt;
** Databases sometimes have issues running in Docker, for example&lt;br /&gt;
&lt;br /&gt;
* If you need a different version of some database that is already running on the default port, run the version you need in a Docker container, or on a different port (and that stores its data in a different directory!)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SSH Config ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
I can haz access?&lt;br /&gt;
Yes, but you are agreeing to be excellent to each other!&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Consider generating a new SSH key pair with&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ ssh-keygen -b 4096&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
then calling it, say, &amp;lt;code&amp;gt;unicorn-nb&amp;lt;/code&amp;gt;, then add this to your &amp;lt;code&amp;gt;~/.ssh/config&amp;lt;/code&amp;gt; file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
Host unicorn-nb&amp;lt;br /&amp;gt;&lt;br /&gt;
User noisebridge&amp;lt;br /&amp;gt;&lt;br /&gt;
Hostname 172.93.55.252&amp;lt;br /&amp;gt;&lt;br /&gt;
PreferredAuthentications publickey&amp;lt;br /&amp;gt;&lt;br /&gt;
IdentityFile ~/.ssh/unicorn-nb&amp;lt;br /&amp;gt;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If your SSH pub key (&amp;lt;code&amp;gt;~/.ssh/unicorn-nb.pub&amp;lt;/code&amp;gt;) has been added to &amp;lt;code&amp;gt;unicorn-nb:~/.ssh/authorized_keys&amp;lt;/code&amp;gt;, you should now be able to shell in by typing&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;$ ssh unicorn-nb&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
...and thanks to the &amp;lt;code&amp;gt;~/.ssh/config&amp;lt;/code&amp;gt; entry, the name of the server you&#039;re trying to SSH into -- namely &amp;lt;code&amp;gt;unicorn-nb&amp;lt;/code&amp;gt; in this case -- should autocomplete!  Add your name to the access list below!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SSH Access ==&lt;br /&gt;
&lt;br /&gt;
* [[User:Mpmckenna8|@mpmckenna8]] - Matt M&lt;br /&gt;
* [[User:James|@James]] - James&lt;br /&gt;
* [[User:bfb|@bfb]]&lt;br /&gt;
* [[User:mana|mana]]&lt;br /&gt;
* [[User:tdfischer|Victoria]]&lt;br /&gt;
* [[User:Elimisteve|@elimisteve]]&lt;br /&gt;
* [[User:Rando|@rando]]&lt;br /&gt;
* [[User:spinda|@spinda]]&lt;br /&gt;
* [[User:Ⅹ|Ⅹ]]&lt;br /&gt;
* [https://github.com/marcoEDU/ @marco]&lt;br /&gt;
* [https://discuss.noisebridge.info/u/jnaulty jnaulty]&lt;br /&gt;
* [[User:r|@r]]&lt;br /&gt;
* [[User:jermops|@jermops]]&lt;br /&gt;
* [[User:culteejen|@culteejen]]&lt;br /&gt;
* [[User:pml|@pml]]&lt;br /&gt;
&lt;br /&gt;
For SSH access, [https://discuss.noisebridge.info/ post to Discuss] or visit the #Unicorn Slack channel and ask @jslack, @elimisteve.&lt;br /&gt;
&lt;br /&gt;
== DNS Access ==&lt;br /&gt;
&lt;br /&gt;
noisebridge.info is registered on NameCheap.com .  As of 2019.02.13, @mindfu, @elimisteve, and @jslack have permission to edit DNS (on NameCheap).&lt;br /&gt;
&lt;br /&gt;
Keeping in mind that &amp;lt;code&amp;gt;*.noisebridge.info&amp;lt;/code&amp;gt; already points to Unicorn, if you nonetheless need to edit DNS, tell [[User:Elimisteve|@elimisteve]], [[User:James|@jslack]], or @mindfu your NameCheap username or email.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Slack SSO ==&lt;br /&gt;
&lt;br /&gt;
Services without their own authentication systems can be shielded a smidge from the ravages of the open internet by placing them behind the basic single sign-on (SSO) gateway at [https://login.noisebridge.info https://login.noisebridge.info].&lt;br /&gt;
&lt;br /&gt;
In the target service&#039;s nginx configuration, add &amp;lt;code&amp;gt;include snippets/auth-init.conf;&amp;lt;/code&amp;gt; toward the start of the main &amp;lt;code&amp;gt;server&amp;lt;/code&amp;gt; block. Somewhere after that, add &amp;lt;code&amp;gt;include snippets/auth-require.conf;&amp;lt;/code&amp;gt;, either in the &amp;lt;code&amp;gt;server&amp;lt;/code&amp;gt; block or in the specific &amp;lt;code&amp;gt;location&amp;lt;/code&amp;gt; block(s) you want to protect. See &amp;lt;code&amp;gt;/etc/nginx/sites-available/printprintprint.noisebridge.info&amp;lt;/code&amp;gt; for an example.&lt;br /&gt;
&lt;br /&gt;
Unauthenticated visitors will be redirected to Slack to sign in (via OAuth) with their Noisebridge Slack account, then redirected back to their destination. The login service injects a cookie to keep track of user sessions, and intercepts requests via nginx&#039;s &amp;lt;code&amp;gt;auth_request&amp;lt;/code&amp;gt; mechanism to check for the presence of a valid cookie. See [https://printprintprint.noisebridge.info https://printprintprint.noisebridge.info] for what this looks like in the wild.&lt;br /&gt;
&lt;br /&gt;
If configured on a reverse proxy-based service, the SSO gateway will automatically pass on the logged-in user&#039;s ID and Slack name via the &amp;lt;code&amp;gt;X-Noisebridge-User-ID&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;X-Noisebridge-User-Name&amp;lt;/code&amp;gt; headers, respectively.&lt;br /&gt;
&lt;br /&gt;
Note the intent here isn&#039;t to exclude anyone by requiring authentication, but to provide a modicum of protection against drive-by mischief for those services that need it (like OctoPrint).&lt;/div&gt;</summary>
		<author><name>Pml</name></author>
	</entry>
</feed>