Files
blog/html/designdocs/tenma.html
2025-06-24 00:59:23 +02:00

326 lines
12 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html lang="en">
<head>
<!-- 2025-06-23 -->
<meta charset="utf-8" />
<meta name="viewport" content="width=100%, initial-scale=0.7" />
<title>Tenma</title>
<meta name="generator" content="Org Mode" />
<style type="text/css">
#content { max-width: 60em; margin: auto; }
.title { text-align: center;
margin-bottom: .2em; }
.subtitle { text-align: center;
font-size: medium;
font-weight: bold;
margin-top:0; }
.todo { font-family: monospace; color: red; }
.done { font-family: monospace; color: green; }
.priority { font-family: monospace; color: orange; }
.tag { background-color: #eee; font-family: monospace;
padding: 2px; font-size: 80%; font-weight: normal; }
.timestamp { color: #bebebe; }
.timestamp-kwd { color: #5f9ea0; }
.org-right { margin-left: auto; margin-right: 0px; text-align: right; }
.org-left { margin-left: 0px; margin-right: auto; text-align: left; }
.org-center { margin-left: auto; margin-right: auto; text-align: center; }
.underline { text-decoration: underline; }
#postamble p, #preamble p { font-size: 90%; margin: .2em; }
p.verse { margin-left: 3%; }
pre {
border: 1px solid #e6e6e6;
border-radius: 3px;
background-color: #f2f2f2;
padding: 8pt;
font-family: monospace;
overflow: auto;
margin: 1.2em;
}
pre.src {
position: relative;
overflow: auto;
}
pre.src:before {
display: none;
position: absolute;
top: -8px;
right: 12px;
padding: 3px;
color: #555;
background-color: #f2f2f299;
}
pre.src:hover:before { display: inline; margin-top: 14px;}
/* Languages per Org manual */
pre.src-asymptote:before { content: 'Asymptote'; }
pre.src-awk:before { content: 'Awk'; }
pre.src-authinfo::before { content: 'Authinfo'; }
pre.src-C:before { content: 'C'; }
/* pre.src-C++ doesn't work in CSS */
pre.src-clojure:before { content: 'Clojure'; }
pre.src-css:before { content: 'CSS'; }
pre.src-D:before { content: 'D'; }
pre.src-ditaa:before { content: 'ditaa'; }
pre.src-dot:before { content: 'Graphviz'; }
pre.src-calc:before { content: 'Emacs Calc'; }
pre.src-emacs-lisp:before { content: 'Emacs Lisp'; }
pre.src-fortran:before { content: 'Fortran'; }
pre.src-gnuplot:before { content: 'gnuplot'; }
pre.src-haskell:before { content: 'Haskell'; }
pre.src-hledger:before { content: 'hledger'; }
pre.src-java:before { content: 'Java'; }
pre.src-js:before { content: 'Javascript'; }
pre.src-latex:before { content: 'LaTeX'; }
pre.src-ledger:before { content: 'Ledger'; }
pre.src-lisp:before { content: 'Lisp'; }
pre.src-lilypond:before { content: 'Lilypond'; }
pre.src-lua:before { content: 'Lua'; }
pre.src-matlab:before { content: 'MATLAB'; }
pre.src-mscgen:before { content: 'Mscgen'; }
pre.src-ocaml:before { content: 'Objective Caml'; }
pre.src-octave:before { content: 'Octave'; }
pre.src-org:before { content: 'Org mode'; }
pre.src-oz:before { content: 'OZ'; }
pre.src-plantuml:before { content: 'Plantuml'; }
pre.src-processing:before { content: 'Processing.js'; }
pre.src-python:before { content: 'Python'; }
pre.src-R:before { content: 'R'; }
pre.src-ruby:before { content: 'Ruby'; }
pre.src-sass:before { content: 'Sass'; }
pre.src-scheme:before { content: 'Scheme'; }
pre.src-screen:before { content: 'Gnu Screen'; }
pre.src-sed:before { content: 'Sed'; }
pre.src-sh:before { content: 'shell'; }
pre.src-sql:before { content: 'SQL'; }
pre.src-sqlite:before { content: 'SQLite'; }
/* additional languages in org.el's org-babel-load-languages alist */
pre.src-forth:before { content: 'Forth'; }
pre.src-io:before { content: 'IO'; }
pre.src-J:before { content: 'J'; }
pre.src-makefile:before { content: 'Makefile'; }
pre.src-maxima:before { content: 'Maxima'; }
pre.src-perl:before { content: 'Perl'; }
pre.src-picolisp:before { content: 'Pico Lisp'; }
pre.src-scala:before { content: 'Scala'; }
pre.src-shell:before { content: 'Shell Script'; }
pre.src-ebnf2ps:before { content: 'ebfn2ps'; }
/* additional language identifiers per "defun org-babel-execute"
in ob-*.el */
pre.src-cpp:before { content: 'C++'; }
pre.src-abc:before { content: 'ABC'; }
pre.src-coq:before { content: 'Coq'; }
pre.src-groovy:before { content: 'Groovy'; }
/* additional language identifiers from org-babel-shell-names in
ob-shell.el: ob-shell is the only babel language using a lambda to put
the execution function name together. */
pre.src-bash:before { content: 'bash'; }
pre.src-csh:before { content: 'csh'; }
pre.src-ash:before { content: 'ash'; }
pre.src-dash:before { content: 'dash'; }
pre.src-ksh:before { content: 'ksh'; }
pre.src-mksh:before { content: 'mksh'; }
pre.src-posh:before { content: 'posh'; }
/* Additional Emacs modes also supported by the LaTeX listings package */
pre.src-ada:before { content: 'Ada'; }
pre.src-asm:before { content: 'Assembler'; }
pre.src-caml:before { content: 'Caml'; }
pre.src-delphi:before { content: 'Delphi'; }
pre.src-html:before { content: 'HTML'; }
pre.src-idl:before { content: 'IDL'; }
pre.src-mercury:before { content: 'Mercury'; }
pre.src-metapost:before { content: 'MetaPost'; }
pre.src-modula-2:before { content: 'Modula-2'; }
pre.src-pascal:before { content: 'Pascal'; }
pre.src-ps:before { content: 'PostScript'; }
pre.src-prolog:before { content: 'Prolog'; }
pre.src-simula:before { content: 'Simula'; }
pre.src-tcl:before { content: 'tcl'; }
pre.src-tex:before { content: 'TeX'; }
pre.src-plain-tex:before { content: 'Plain TeX'; }
pre.src-verilog:before { content: 'Verilog'; }
pre.src-vhdl:before { content: 'VHDL'; }
pre.src-xml:before { content: 'XML'; }
pre.src-nxml:before { content: 'XML'; }
/* add a generic configuration mode; LaTeX export needs an additional
(add-to-list 'org-latex-listings-langs '(conf " ")) in .emacs */
pre.src-conf:before { content: 'Configuration File'; }
table { border-collapse:collapse; }
caption.t-above { caption-side: top; }
caption.t-bottom { caption-side: bottom; }
td, th { vertical-align:top; }
th.org-right { text-align: center; }
th.org-left { text-align: center; }
th.org-center { text-align: center; }
td.org-right { text-align: right; }
td.org-left { text-align: left; }
td.org-center { text-align: center; }
dt { font-weight: bold; }
.footpara { display: inline; }
.footdef { margin-bottom: 1em; }
.figure { padding: 1em; }
.figure p { text-align: center; }
.equation-container {
display: table;
text-align: center;
width: 100%;
}
.equation {
vertical-align: middle;
}
.equation-label {
display: table-cell;
text-align: right;
vertical-align: middle;
}
.inlinetask {
padding: 10px;
border: 2px solid gray;
margin: 10px;
background: #ffffcc;
}
#org-div-home-and-up
{ text-align: right; font-size: 70%; white-space: nowrap; }
textarea { overflow-x: auto; }
.linenr { font-size: smaller }
.code-highlighted { background-color: #ffff00; }
.org-info-js_info-navigation { border-style: none; }
#org-info-js_console-label
{ font-size: 10px; font-weight: bold; white-space: nowrap; }
.org-info-js_search-highlight
{ background-color: #ffff00; color: #000000; font-weight: bold; }
.org-svg { }
</style>
<link rel="stylesheet" href="/static/fonts.css" type="text/css"/>
<link rel="stylesheet" href="/static/style.css" type="text/css"/>
<script type="text/javascript" src="/static/jquery-3.6.4.slim.min.js"></script>
<script type="text/javascript" src="/static/esquemadorg.js"></script>
</head>
<body>
<div id="preamble" class="status">
<div id="header">
<a class="navbar-link" href="/">Home</a>
<a class="navbar-link" href="/about.html"></a>
<a class="navbar-link" href="/sitemap.html">Sitemap</a>
<a class="navbar-link" href="/blogroll.html">Blogroll</a>
</div>
</div>
<div id="content" class="content">
<div id="outline-container-orgcfe224f" class="outline-2">
<h2 id="orgcfe224f">Opening tenma up to friends</h2>
<div class="outline-text-2" id="text-orgcfe224f">
<p>
Our server/intranet Tenma is currently underutilized, and it would be nice/fun/useful to open it up to select other people. This would only be available to friends, not a public service.
</p>
</div>
<div id="outline-container-org49b87da" class="outline-3">
<h3 id="org49b87da">Tenma Specs</h3>
<div class="outline-text-3" id="text-org49b87da">
<ul class="org-ul">
<li>Storage: 2×12TB in RAID 1</li>
<li>CPU: Ryzen 7 3700X (16 threads @ 3.6GHz)</li>
<li>Memory: 64GB</li>
<li>Network: Gigabit ethernet (Hetzner server in Finland)</li>
</ul>
</div>
</div>
<div id="outline-container-orgd587eb5" class="outline-3">
<h3 id="orgd587eb5">Things that Tenma can provide</h3>
<div class="outline-text-3" id="text-orgd587eb5">
</div>
<div id="outline-container-orgf3b4082" class="outline-4">
<h4 id="orgf3b4082">Storage</h4>
<div class="outline-text-4" id="text-orgf3b4082">
<p>
As of 23-06-2025, 4.6TB free space. Could start by reserving 1TB, which would provide enough storage for 20×50GB for guests users, which would be plenty for a long time. Tenma also hosts a <a href="https://github.com/9001/copyparty">copyparty</a> instance that could be opened to the public to some extent or another.
</p>
</div>
</div>
<div id="outline-container-org14f7a18" class="outline-4">
<h4 id="org14f7a18">Bandwidth/hosting</h4>
<div class="outline-text-4" id="text-org14f7a18">
<p>
Tenma has full web hosting infrastructure set up (hosting this blog among other things), so that would be easy to extend to other people as well.
</p>
</div>
</div>
<div id="outline-container-org96eb0f9" class="outline-4">
<h4 id="org96eb0f9">VPS</h4>
<div class="outline-text-4" id="text-org96eb0f9">
<p>
In line with the previous 2 points; compute resources are currently underutilized.
</p>
</div>
</div>
<div id="outline-container-orgdd34696" class="outline-4">
<h4 id="orgdd34696">Intranet</h4>
<div class="outline-text-4" id="text-orgdd34696">
<p>
Tenma runs a Wireguard VPN network. You can use this to, for instance, access services between two connected devices without having to open them up to the wider internet.
</p>
</div>
</div>
<div id="outline-container-org6bfe2ac" class="outline-4">
<h4 id="org6bfe2ac">DNS Server</h4>
<div class="outline-text-4" id="text-org6bfe2ac">
<p>
Tenma runs a fully resolving DNS server, with some local entries for devices on the VPN network. This should probably be automated in some way, and the service should be augmented with DNSSEC before opening.
</p>
</div>
</div>
<div id="outline-container-orgce310db" class="outline-4">
<h4 id="orgce310db">Git</h4>
<div class="outline-text-4" id="text-orgce310db">
<p>
Tenma has a <a href="https://git.nakadashi.lol/">Gitea instance</a>
</p>
</div>
</div>
<div id="outline-container-org3d66dd9" class="outline-4">
<h4 id="org3d66dd9">Livestreaming</h4>
<div class="outline-text-4" id="text-org3d66dd9">
<p>
Tenma has infrastructure proven capable of restreaming 1080p video and high quality audio to at least ~100 people although this is CPU intensive and requires activating a high bandwidth restreaming VPS that is usually kept disabled to save costs.
</p>
</div>
</div>
<div id="outline-container-orgcd0cff1" class="outline-4">
<h4 id="orgcd0cff1">Other things</h4>
<div class="outline-text-4" id="text-orgcd0cff1">
<p>
Some other services that currently run on Tenma or have run there before:
</p>
<ul class="org-ul">
<li><a href="https://github.com/dani-garcia/vaultwarden">Vaultwarden</a> Bitwarden-compatible password manager server</li>
<li><a href="https://soju.im/">Soju</a> IRC bouncer</li>
<li><a href="https://syncplay.pl/">Syncplay</a> server</li>
<li>Video game servers (think Minecraft, Terraria, &#x2026;)</li>
</ul>
</div>
</div>
</div>
<div id="outline-container-org92c2763" class="outline-3">
<h3 id="org92c2763">Considerations</h3>
<div class="outline-text-3" id="text-org92c2763">
<ul class="org-ul">
<li>This would require Tenma&rsquo;s internal documentation to be updated, adapted and publicized.</li>
<li>Security :teto:</li>
</ul>
</div>
</div>
</div>
</div>
<div id="postamble" class="status">
<div id='footer'><div id='modified-date'>Last modified: 2025-06-23</div><hr>
If you have any comments about this page, you can email me at: <br>
<b>akko [shift-2] nakadashi -dot- lol</b><br>
And I may include them on the website!<br>
<br>
All code on this website is licensed <b>GPLv3</b> unless otherwise indicated. <br>
Blog proudly built using <a href="/posts/elog-1-blog.html">org-mode</a>!
</div>
</div>
</body>
</html>