diff --git a/flake.lock b/flake.lock index 683236b..e4b5164 100644 --- a/flake.lock +++ b/flake.lock @@ -180,15 +180,15 @@ "nixpkgs": "nixpkgs_3" }, "locked": { - "lastModified": 1724722703, - "narHash": "sha256-5xhQLp0tLY/1nWlcU5uYsCUawxcwqEzAGi0b8wAQKxA=", - "owner": "Infinidoge", + "lastModified": 1724982042, + "narHash": "sha256-IwHIZYo1fyloQxvBy15QVzMALNEa7Jo6tzXVJj7U9Ws=", + "owner": "JimmJam", "repo": "nix-minecraft", - "rev": "f74de364f4354e509cc12399de4d4df834a0a45f", + "rev": "32b632e29b141cc4c441b6e5504d33a9564dc3e6", "type": "github" }, "original": { - "owner": "Infinidoge", + "owner": "JimmJam", "repo": "nix-minecraft", "type": "github" } diff --git a/nixos/hardware/machines/server.nix b/nixos/hardware/machines/server.nix index a3c2fc4..6011223 100644 --- a/nixos/hardware/machines/server.nix +++ b/nixos/hardware/machines/server.nix @@ -81,13 +81,18 @@ fsType = "none"; options = [ "bind" ]; }; + "/var/lib/mastodon" = { + device = "/export/JimboNFS/System/var/lib/mastodon"; + fsType = "none"; + options = [ "bind" ]; + }; "/var/lib/private/pufferpanel/servers" = { device = "/export/JimboNFS/System/var/lib/pufferpanel/servers"; fsType = "none"; options = [ "bind" ]; }; - "/var/lib/mastodon" = { - device = "/export/JimboNFS/System/var/lib/mastodon"; + "/srv/minecraft" = { + device = "/export/JimboNFS/System/srv/minecraft"; fsType = "none"; options = [ "bind" ]; }; diff --git a/nixos/server.nix b/nixos/server.nix index 73bc845..8ccc8f2 100644 --- a/nixos/server.nix +++ b/nixos/server.nix @@ -31,7 +31,6 @@ ./server/nfs.nix ./server/nginx.nix ./server/owncast.nix - ./server/pufferpanel.nix ./server/minecraft ./server/tandoor.nix ./server/vaultwarden.nix diff --git a/nixos/server/minecraft/default.nix b/nixos/server/minecraft/default.nix index 680e62c..9909d63 100644 --- a/nixos/server/minecraft/default.nix +++ b/nixos/server/minecraft/default.nix @@ -2,11 +2,10 @@ imports = [ inputs.nix-minecraft.nixosModules.minecraft-servers ./servers/velocity.nix - #./servers/viaproxy.nix ./servers/dewdemolisher.nix ./servers/johnside.nix ./servers/blockworld.nix - #./servers/beta.nix + ./servers/uberbeta.nix ]; nixpkgs.overlays = [ inputs.nix-minecraft.overlay ]; diff --git a/nixos/server/minecraft/essentialsconfig.yml b/nixos/server/minecraft/essentialsconfig.yml index 05633d5..53aaff7 100644 --- a/nixos/server/minecraft/essentialsconfig.yml +++ b/nixos/server/minecraft/essentialsconfig.yml @@ -1,9 +1,4 @@ - -############################################################ -# +------------------------------------------------------+ # -# | Notes | # -# +------------------------------------------------------+ # -############################################################ +## Notes # This is the config file for EssentialsX. # This config was generated for version 2.21.0-dev+107-7b02d22. @@ -17,11 +12,7 @@ # If you need help, you can join the EssentialsX community: https://essentialsx.net/community.html -############################################################ -# +------------------------------------------------------+ # -# | Essentials (Global) | # -# +------------------------------------------------------+ # -############################################################ +# Essentials (Global) # A color code between 0-9 or a-f. Set to 'none' to disable. # In 1.16+ you can use hex color codes here as well. (For example, #613e1d is brown). @@ -760,11 +751,7 @@ max-itemlore-lines: 10 # This uses the public GitHub API and no identifying information is sent or stored. update-check: true -############################################################ -# +------------------------------------------------------+ # -# | Homes | # -# +------------------------------------------------------+ # -############################################################ +## Homes # Allows people to set their bed during the day. # This setting has no effect in Minecraft 1.15+, as Minecraft will always allow the player to set their bed location during the day. @@ -804,11 +791,7 @@ spawn-if-no-home: true # Should players be asked to provide confirmation for homes which they attempt to overwrite? confirm-home-overwrite: false -############################################################ -# +------------------------------------------------------+ # -# | Economy | # -# +------------------------------------------------------+ # -############################################################ + ## Economy # For more information, visit http://wiki.ess3.net/wiki/Essentials_Economy @@ -873,11 +856,7 @@ show-zero-baltop: true # For 1'234,50 use fr-ch #currency-symbol-format-locale: en-US -############################################################ -# +------------------------------------------------------+ # -# | Help | # -# +------------------------------------------------------+ # -############################################################ +## Help # Show other plugins commands in help. non-ess-in-help: true @@ -888,11 +867,7 @@ non-ess-in-help: true # You can use negative permissions to remove access to just a single plugins help if the following is enabled. hide-permissionless-help: true -############################################################ -# +------------------------------------------------------+ # -# | EssentialsX Chat | # -# +------------------------------------------------------+ # -############################################################ +## EssentialsX Chat # You need to install EssentialsX Chat for this section to work. # See https://essentialsx.net/wiki/Module-Breakdown.html for more information. @@ -955,11 +930,7 @@ chat: # Whether chat questions should be enabled or not. question-enabled: true -############################################################ -# +------------------------------------------------------+ # -# | EssentialsX Protect | # -# +------------------------------------------------------+ # -############################################################ +## EssentialsX Protect # You need to install EssentialsX Protect for this section to work. # See https://essentialsx.net/wiki/Module-Breakdown.html for more information. @@ -1103,11 +1074,7 @@ protect: thunder: false lightning: false -############################################################ -# +------------------------------------------------------+ # -# | EssentialsX AntiBuild | # -# +------------------------------------------------------+ # -############################################################ +## EssentialsX AntiBuild # You need to install EssentialsX AntiBuild for this section to work. # See https://essentialsx.net/wiki/Module-Breakdown.html and http://wiki.ess3.net/wiki/AntiBuild for more information. @@ -1149,11 +1116,7 @@ protect: # Which blocks should not be dispensed by dispensers dispenser: -############################################################ -# +------------------------------------------------------+ # -# | EssentialsX Spawn + New Players | # -# +------------------------------------------------------+ # -############################################################ +## EssentialsX Spawn + New Players # You need to install EssentialsX Spawn for this section to work. # See https://essentialsx.net/wiki/Module-Breakdown.html for more information. diff --git a/nixos/server/minecraft/logs/debug.log b/nixos/server/minecraft/logs/debug.log new file mode 100644 index 0000000..3c6861e --- /dev/null +++ b/nixos/server/minecraft/logs/debug.log @@ -0,0 +1,3 @@ +[13:10:19] [main/INFO] (ViaProxy) Usage: java -jar viaproxy.jar | Starts ViaProxy in graphical mode if available +[13:10:19] [main/INFO] (ViaProxy) Usage: java -jar viaproxy.jar config | Starts ViaProxy with the specified config file +[13:10:19] [main/INFO] (ViaProxy) Usage: java -jar viaproxy.jar cli --help | Starts ViaProxy in CLI mode diff --git a/nixos/server/minecraft/logs/latest.log b/nixos/server/minecraft/logs/latest.log new file mode 100644 index 0000000..3c6861e --- /dev/null +++ b/nixos/server/minecraft/logs/latest.log @@ -0,0 +1,3 @@ +[13:10:19] [main/INFO] (ViaProxy) Usage: java -jar viaproxy.jar | Starts ViaProxy in graphical mode if available +[13:10:19] [main/INFO] (ViaProxy) Usage: java -jar viaproxy.jar config | Starts ViaProxy with the specified config file +[13:10:19] [main/INFO] (ViaProxy) Usage: java -jar viaproxy.jar cli --help | Starts ViaProxy in CLI mode diff --git a/nixos/server/minecraft/servers/johnside.nix b/nixos/server/minecraft/servers/johnside.nix index a8d2d1c..baed064 100644 --- a/nixos/server/minecraft/servers/johnside.nix +++ b/nixos/server/minecraft/servers/johnside.nix @@ -8,7 +8,7 @@ in { serverProperties = common.serverProperties // { difficulty = 2; server-port = 30009; - motd = "§l§aJohnside SMP§r §l§fworld for §4John lovers only."; + motd = "§l§9Johnside SMP§r §l§fworld for §4John lovers only."; }; whitelist = common.whitelist; symlinks = common.symlinks // { diff --git a/nixos/server/minecraft/servers/uberbeta.nix b/nixos/server/minecraft/servers/uberbeta.nix new file mode 100644 index 0000000..a2410de --- /dev/null +++ b/nixos/server/minecraft/servers/uberbeta.nix @@ -0,0 +1,16 @@ +{pkgs, ...}: let + common = import ../common.nix { inherit pkgs; }; + uberBukkit = pkgs.vanillaServers.vanilla.overrideAttrs (oldAttrs: { + src = ../uberbukkit.jar; + }); +in { + services.minecraft-servers.servers.uberbeta = { + enable = true; + package = uberBukkit; + jvmOpts = "-Xmx512M"; + serverProperties = common.serverProperties // { + difficulty = 3; + server-port = 30005; + }; + }; +} diff --git a/nixos/server/minecraft/uberbukkit.jar b/nixos/server/minecraft/uberbukkit.jar new file mode 100644 index 0000000..c86780d Binary files /dev/null and b/nixos/server/minecraft/uberbukkit.jar differ diff --git a/nixos/server/minecraft/velocity.toml b/nixos/server/minecraft/velocity.toml deleted file mode 100644 index 1ed7d6d..0000000 --- a/nixos/server/minecraft/velocity.toml +++ /dev/null @@ -1,133 +0,0 @@ -# Config version. Do not change this -config-version = "2.7" - -# What port should the proxy be bound to? By default, we'll bind to all addresses on port 25577. -bind = "0.0.0.0:25565" - -# What should be the MOTD? -motd = "<#09add3>A Velocity Server" - -# What should we display for the maximum number of players? -show-max-players = 500 - -# Should we authenticate players with Mojang? By default, this is on. -online-mode = true - -# Should the proxy enforce the new public key security standard? By default, this is on. -force-key-authentication = true - -# If client's ISP/AS sent from this proxy is different from the one from Mojang's -# authentication server, the player is kicked. This disallows some VPN and proxy -# connections but is a weak form of protection. -prevent-client-proxy-connections = false - -# Should we forward IP addresses and other data to backend servers? -# - "none": No forwarding will be done. All players will appear to be connecting from the proxy and will have offline-mode UUIDs. -# - "legacy": Forward player IPs and UUIDs in a BungeeCord-compatible format. Use if you run servers using Minecraft 1.12 or lower. -# - "bungeeguard": Forward player IPs and UUIDs in a format supported by the BungeeGuard plugin. Use if you run servers using Minecraft 1.12 or lower, or if they don't support modern. -# - "modern": Forward player IPs and UUIDs as part of the login process using Velocity's native forwarding. Only applicable for Minecraft 1.13 or higher. -player-info-forwarding-mode = "bungeeguard" - -# If you are using modern or BungeeGuard IP forwarding, configure a file that contains a unique secret here. -# The file is expected to be UTF-8 encoded and not empty. -forwarding-secret-file = "forwarding.secret" - -# Announce whether or not your server supports Forge. If you run a modded server, we -# suggest turning this on. -# -# If your network runs one modpack consistently, use ping-passthrough = "mods" instead for a nicer display in the server list. -announce-forge = false - -# If enabled and the proxy is in online mode, Velocity will kick -# any existing player who is online if a duplicate connection attempt is made. -kick-existing-players = false - -# Should Velocity pass server list ping requests to a backend server? -# - "disabled": No pass-through will be done. The velocity.toml and server-icon.png will determine the initial server list ping response. -# - "mods": Passes only the mod list from your backend server into the response. The first server in your try list with a mod list will be used. -# - "description": Uses the description and mod list from the backend server. The first server in the try list that responds is used for the description and mod list. -# - "all": Uses the backend server's response as the proxy response. Velocity configuration is used as fallback. -ping-passthrough = "all" - -# If not enabled (default is true) player IP addresses will be replaced by in logs -enable-player-address-logging = true - -[servers] -dewdemolisher = "127.0.0.1:30010" -johnside = "127.0.0.1:30009" -bloxelcom = "127.0.0.1:30012" -beta = "127.0.0.1:30011" - -# In what order we should try servers when a player logs in or is kicked from a server. -try = [ - "dewdemolisher" -] - -[forced-hosts] -# Configure your forced hosts here. -"mc.jimbosfiles.com" = [ - "dewdemolisher" -] -"john.jimbosfiles.com" = [ - "johnside" -] -"blox.jimbosfiles.com" = [ - "bloxelcom" -] -"beta.jimbosfiles.com" = [ - "beta" -] - -[advanced] -# How large a Minecraft packet has to be before we compress it. -compression-threshold = 256 - -# How much compression should be done (from 0-9). The default is -1, which uses the default level of 6. -compression-level = -1 - -# How fast (in milliseconds) are clients allowed to connect after the last connection? By default, this is three seconds. Disable this by setting this to 0. -login-ratelimit = 3000 - -# Specify a custom timeout for connection timeouts here. The default is five seconds. -connection-timeout = 5000 - -# Specify a read timeout for connections here. The default is 30 seconds. -read-timeout = 30000 - -# Enables compatibility with HAProxy's PROXY protocol. If you don't know what this is for, then don't enable it. -haproxy-protocol = false - -# Enables TCP fast open support on the proxy. Requires the proxy to run on Linux. -tcp-fast-open = false - -# Enables BungeeCord plugin messaging channel support on Velocity. -bungee-plugin-message-channel = true - -# Shows ping requests to the proxy from clients. -show-ping-requests = false - -# By default, Velocity will attempt to gracefully handle situations where the user unexpectedly -# loses connection to the server without an explicit disconnect message by attempting to fall the -# user back, except in the case of read timeouts. BungeeCord will disconnect the user instead. You -# can disable this setting to use the BungeeCord behavior. -failover-on-unexpected-server-disconnect = true - -# Declares the proxy commands to 1.13+ clients. -announce-proxy-commands = true - -# Enables the logging of commands -log-command-executions = false - -# Enables logging of player connections when connecting to the proxy, switching servers -# and disconnecting from the proxy. -log-player-connections = true - -# Allows players transferred from other hosts via the -# Transfer packet (Minecraft 1.20.5) to be received. -accepts-transfers = false - -[query] -enabled = false -port = 25577 -map = "Velocity" -show-plugins = false diff --git a/nixos/server/minecraft/viaproxy.jar b/nixos/server/minecraft/viaproxy.jar new file mode 100644 index 0000000..2343e5a Binary files /dev/null and b/nixos/server/minecraft/viaproxy.jar differ diff --git a/nixos/server/pufferpanel.nix b/nixos/server/pufferpanel.nix deleted file mode 100644 index b9ff0df..0000000 --- a/nixos/server/pufferpanel.nix +++ /dev/null @@ -1,31 +0,0 @@ -{pkgs, outputs, lib, ...}: { - services = { - pufferpanel = { - enable = true; - environment = { - PUFFER_WEB_HOST = ":5010"; - PUFFER_PANEL_SETTINGS_MASTERURL = "https://panel.${outputs.secrets.jimDomain}"; - PUFFER_PANEL_EMAIL_PROVIDER = "smtp"; - PUFFER_PANEL_EMAIL_HOST = "mx.${outputs.secrets.jimDomain}:587"; - PUFFER_PANEL_EMAIL_FROM = "noreply@${outputs.secrets.jimDomain}"; - PUFFER_PANEL_EMAIL_USERNAME = "noreply@${outputs.secrets.jimDomain}"; - PUFFER_PANEL_EMAIL_PASSWORD = outputs.secrets.noreplyPassword; - }; - extraPackages = with pkgs; [ bash curl gawk gnutar gzip ]; - package = pkgs.buildFHSEnv { - name = "pufferpanel-fhs"; - meta.mainProgram = "pufferpanel-fhs"; - runScript = lib.getExe pkgs.pufferpanel; - targetPkgs = pkgs': with pkgs'; [ icu openssl zlib ]; - }; - }; - nginx.virtualHosts."panel.${outputs.secrets.jimDomain}" = { - enableACME = true; - forceSSL = true; - locations."/" = { - proxyPass = "http://127.0.0.1:5010"; - proxyWebsockets = true; - }; - }; - }; -}