1
0
Håvard O. Nordstrand 5 жил өмнө
parent
commit
0922a076b6

+ 49 - 0
config/game-servers/minecraft-bukkit.md

@@ -0,0 +1,49 @@
+---
+title: Minecraft (Bukkit)
+breadcrumbs:
+- title: Configuration
+- title: Game Servers
+---
+{% include header.md %}
+
+This page is intended for the Bukkit server software or any of its derivatives, like SpigotMC, PaperMC and Tuinity.
+
+## Server Variants
+
+- [Bukkit](https://bukkit.org/):
+    - An open-source modification of the vanilla Minecraft server with a rich plugin API, increased configurability and other improvements.
+    - Acquired by Mojang as part of hiring parts of the Bukkit team. Although, Mojang did not attempt to control the project.
+    - Discontinued in 2014 due to project retirement and a following DMCA takedown from one of its biggest contributors ([unofficial explanation](https://www.spigotmc.org/wiki/unofficial-explanation-about-the-dmca/)). Due to the DMCA takedown, all pre-built images were removed and similar active projects had to find a way to provide the modified images without redistributing the vanilla Minecraft server.
+    - The API (and project) is called "Bukkit", while the implementation and modified vanilla server (`net.minecraft.server` or native Minecraft server (NMS)) is called "CraftBukkit".
+- [SpigotMC](https://www.spigotmc.org/):
+    - A fork of Bukkit with enhancements.
+- [PaperMC](https://papermc.io/):
+    - A fork of SpigotMC with enhancements.
+- [Tuinity](https://github.com/Spottedleaf/Tuinity):
+    - A fork of PaperMC (or EmpireCraft (EMC)) with enhancements.
+    - Attempts to merge enhancements back into PaperMC, but with some resistance due to personal disagreements.
+
+## Resource Requirements
+
+### Memory Usage
+
+- Allocate 1-10 GB per server, with 1G for tiny servers with few players and 10G+ for large servers with many players and worlds.
+- The usage scales with the number of worlds, players and plugins, as well as how scattered throughout the world(s) the players are.
+- Memory allocation for Minecraft or more about GC pressure than running completely out of memory, so deciding how much is enough can be hard.
+- Memory usage is set using the `Xmx` parameter, which specified how much memory the JVM is allowed to use (excluding internal usage). The server is expected to use all of it, which does *not* mean that the server is out of memory. `Xms`, the initial memory allocation, should be the same as `Xmx` to avoid unused memory.
+- Leave some of the available memory unused when setting `Xmx`, as the JVM internals, OS etc. requires memory too.
+- See [Tuning the JVM – G1GC Garbage Collector Flags for Minecraft (Aikar)](https://aikar.co/2018/07/02/tuning-the-jvm-g1gc-garbage-collector-flags-for-minecraft/).
+
+## Configuration
+
+### JVM Tuning
+
+From [Tuning the JVM – G1GC Garbage Collector Flags for Minecraft (Aikar)](https://aikar.co/2018/07/02/tuning-the-jvm-g1gc-garbage-collector-flags-for-minecraft/) (updated Apr 25 2020 3:30PM EST):
+
+```text
+-Xms10G -Xmx10G -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true
+```
+
+`-Xmx` and `-Xms` should be equal and set to an appropriate size. Remember to leave memory for JVM internals, the OS and other progrems.
+
+{% include footer.md %}

+ 8 - 0
config/linux-server/applications.md

@@ -45,6 +45,14 @@ Sends an emails when APT updates are available.
 1. Modify the check interval in `/etc/cron.d/apticron` (e.g. `30 23 * * *`).
 1. Test it: `apticron`
 
+## Avahi Daemon
+
+**TODO**
+
+## Setup
+
+1. Install: `apt install avahi-daemon`
+
 ## AWS CLI
 
 **Possibly outdated**

+ 2 - 0
index.md

@@ -71,6 +71,7 @@ Random collection of config notes and miscellaneous theory. Technically not a wi
 ### Game Servers
 
 - [Counter-Strike: Global Offensive (CS:GO)](config/game-servers/csgo/)
+- [Minecraft (Bukkit)](config/game-servers/minecraft-bukkit/)
 - [Team Fortress 2 (TF2)](config/game-servers/tf2/)
 
 ## Information Technology
@@ -98,6 +99,7 @@ Random collection of config notes and miscellaneous theory. Technically not a wi
 
 ### General
 
+- [DBMSes](se/general/dbmses/)
 - [Licenses](se/general/licenses/)
 
 ### Languages

+ 45 - 0
se/general/dbmses.md

@@ -0,0 +1,45 @@
+---
+title: DBMSes
+breadcrumbs:
+- title: Software Engineering
+- title: General
+---
+{% include header.md %}
+
+A very brief comparison of different database management systems (DBMSes).
+
+## Relational DBMSes
+
+### General
+
+- Most RDBMSes use their own variation of standard SQL, with both extra and missing features.
+
+### SQLite
+
+- Open-source.
+- Lightweight and portable.
+- Serverless and backed by a single file, which makes it very simple to configure and use.
+- No users or access control.
+- Low memory requirements, making it appropriate for memory constrained enviromnents.
+- Limited concurrency, although multiple processes *can* read the DB file simultaneously.
+- Can be used entirely in memory, e.g. for testing.
+
+### MySQL
+
+- Dual-licensed as open-source and proprietary. Acquired by Oracle Corporation.
+- Very popular with a huge amount of community support and 3rd-party tools.
+- Focused more on speed than SQL compliance.
+- Server-based  with users and access control.
+- Supports replication, for increased reliability and horizontal scaling.
+- Not fully SQL compliant, lacking support for certain features.
+- Limited support for replication.
+
+### PostgreSQL
+
+- Open-source and community-driven.
+- Object-relational DBMS (ORDBMS).
+- Server-based  with users and access control.
+- Focused more on SQL compliance and features than speed.
+- Better concurrent read-write performance than MySQL, but less performant for simple read-heavy traffic.
+
+{% include footer.md %}