April 15Apr 15 Hello,I'm testing this docker container to maybe move from AMP.I do folder and file permissions set, but the Files tab for the Minecraft server just never loads.Am I missing something? I don't mind uploading from unraid into the plugins folder but would be nice to be able to do it from the Files section too.It seems to do the same thing from local IP and from reverse proxy (pangolin, cloudflare).Any help would be great.
August 31Aug 31 Hello, suddenly my crafty 4 server is not loading properly. My daughter and I play together still, she is in Germany and had a little time to play and discovered the server was not working... I am running 7.3.1 of Unraid and the latest crafty 4 version. I have rebooted the server, stopped/started the crafty container and get the following logs everytime. BTW, the container says it is running, I can console into it but not get to the web gui.Any help would be appreciated.Matt2026-08-31 04:51:54,626 DEBG 'start-script' stdout output: [+] Crafty: 31/08/26 04:51:54 - INFO: There is nothing to migrate 2026-08-31 04:51:54,656 DEBG 'start-script' stdout output: [+] Crafty: 31/08/26 04:51:54 - INFO: Loaded Server: ID 5bcb2015-94b6-428a-b5bb-96b2caadc910 | Name: Sam and Dad Original 1.20.0 | Autostart: False | Delay: 10 2026-08-31 04:51:54,657 DEBG 'start-script' stdout output: [+] Crafty: 31/08/26 04:51:54 - INFO: Starting migrations 2026-08-31 04:51:54,659 DEBG 'start-script' stdout output: [+] Crafty: 31/08/26 04:51:54 - INFO: There is nothing to migrate 2026-08-31 04:51:54,686 DEBG 'start-script' stdout output: [+] Crafty: 31/08/26 04:51:54 - INFO: Loaded Server: ID e0b1e732-70fb-417d-adfb-93ed6d33a1d7 | Name: Sam and Dad home 1.20.4 | Autostart: False | Delay: 20 2026-08-31 04:51:54,687 DEBG 'start-script' stdout output: [+] Crafty: 31/08/26 04:51:54 - INFO: Starting migrations 2026-08-31 04:51:54,688 DEBG 'start-script' stdout output: [+] Crafty: 31/08/26 04:51:54 - INFO: There is nothing to migrate 2026-08-31 04:51:54,717 DEBG 'start-script' stdout output: [+] Crafty: 31/08/26 04:51:54 - INFO: Loaded Server: ID 95a0b731-11d3-4bf1-87f9-06c07fd93152 | Name: 1.20.6 import world | Autostart: False | Delay: 10 2026-08-31 04:51:54,719 DEBG 'start-script' stdout output: [+] Crafty: 31/08/26 04:51:54 - INFO: Starting migrations 2026-08-31 04:51:54,720 DEBG 'start-script' stdout output: [+] Crafty: 31/08/26 04:51:54 - INFO: There is nothing to migrate 2026-08-31 04:51:54,752 DEBG 'start-script' stdout output: [+] Crafty: 31/08/26 04:51:54 - INFO: Loaded Server: ID 0dcbfcb1-5ae8-40cf-b834-69e936d82795 | Name: 1.21.4 import world | Autostart: False | Delay: 10 2026-08-31 04:51:54,754 DEBG 'start-script' stdout output: [+] Crafty: 31/08/26 04:51:54 - INFO: Starting migrations 2026-08-31 04:51:54,754 DEBG 'start-script' stdout output: [+] Crafty: 31/08/26 04:51:54 - INFO: There is nothing to migrate 2026-08-31 04:51:54,787 DEBG 'start-script' stdout output: [+] Crafty: 31/08/26 04:51:54 - INFO: Loaded Server: ID 193700a7-8650-4415-aa8a-7e5445551891 | Name: Tower 1.21.5 import | Autostart: False | Delay: 30 2026-08-31 04:51:54,788 DEBG 'start-script' stdout output: [+] Crafty: 31/08/26 04:51:54 - INFO: Starting migrations 2026-08-31 04:51:54,789 DEBG 'start-script' stdout output: [+] Crafty: 31/08/26 04:51:54 - INFO: There is nothing to migrate 2026-08-31 04:51:54,791 DEBG 'start-script' stderr output: Traceback (most recent call last): 2026-08-31 04:51:54,792 DEBG 'start-script' stderr output: File "/opt/crafty/main.py", line 462, in <module> controller.servers.init_all_servers() ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^ File "/opt/crafty/app/classes/controllers/servers_controller.py", line 270, in init_all_servers "server_obj": ServerInstance( ~~~~~~~~~~~~~~^ server.get("server_id"), ^^^^^^^^^^^^^^^^^^^^^^^^ ...<5 lines>... self.import_helper, ^^^^^^^^^^^^^^^^^^^ ), ^ File "/opt/crafty/app/classes/shared/server.py", line 285, in __init__ self.player_cache = list(json.load(f).values()) ~~~~~~~~~^^^ 2026-08-31 04:51:54,792 DEBG 'start-script' stderr output: File "/usr/lib/python3.14/json/__init__.py", line 298, in load return loads(fp.read(), cls=cls, object_hook=object_hook, parse_float=parse_float, parse_int=parse_int, parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw) File "/usr/lib/python3.14/json/__init__.py", line 352, in loads return _default_decoder.decode(s) ~~~~~~~~~~~~~~~~~~~~~~~^^^ File "/usr/lib/python3.14/json/decoder.py", line 345, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end()) ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib/python3.14/json/decoder.py", line 363, in raw_decode raise JSONDecodeError("Expecting value", s, err.value) from None json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 2026-08-31 04:51:54,900 DEBG fd 9 closed, stopped monitoring <POutputDispatcher at 22875317376672 for <Subprocess at 22875318647984 with name start-script in state RUNNING> (stdout)> 2026-08-31 04:51:54,900 DEBG fd 11 closed, stopped monitoring <POutputDispatcher at 22875317310544 for <Subprocess at 22875318647984 with name start-script in state RUNNING> (stderr)> 2026-08-31 04:51:54,900 WARN exited: start-script (exit status 1; not expected) 2026-08-31 04:51:54,900 DEBG received SIGCHLD indicating a child quit
September 3Sep 3 Hey fellow crafties, I am posting this in case someone finds it helpful:I was having problems with the files tab in crafty4, due to a bug in the binhex container messing with the latest crafty version.All was working, but the files in files tab wouldn't show.Root cause:The container's init script symlinks /opt/crafty/servers → /config/crafty/servers (and the other Crafty dirs) for persistence. Crafty stores server paths in its database as /opt/crafty/servers/<id>. However, Crafty's files API resolves paths with Path(...).resolve() before running its path-traversal safety check — resolve() follows the symlink and returns /config/crafty/servers/..., which is then compared against the unresolved DB path /opt/crafty/servers/.... The prefixes don't match, relative_to() raises ValueError, and the endpoint returns 500. (See app/classes/web/routes/api/servers/server/files.py, line 357 in v4.10.8.)So this is a collision between Crafty's path validation and the symlink layout of this image — it likely affects every user of this container on recent Crafty versions, they just may not have checked the dev console.Workaround (tested, works):Stop the container, back up crafty.sqlite, then rewrite the stored paths from /opt/crafty/ to /config/crafty/ (both point to the same data, but /config/... survives the resolve() comparison):Copycp /path/to/appdata/binhex-crafty-4/crafty/app/config/db/crafty.sqlite /path/to/appdata/binhex-crafty-4/crafty/app/config/db/crafty.sqlite.bak docker run --rm -i --entrypoint python3 -v /path/to/appdata/binhex-crafty-4:/config binhex/arch-crafty-4 - <<'PYEOF' import sqlite3 con = sqlite3.connect('/config/crafty/app/config/db/crafty.sqlite') cur = con.cursor() for c in ("path", "log_path", "execution_command"): cur.execute(f"UPDATE servers SET {c} = REPLACE({c}, '/opt/crafty/', '/config/crafty/')") con.commit() PYEOF After restarting the container, the Files tab works again for all servers. Note: newly created/imported servers get /opt/crafty/... paths again and need the same treatment.Simply rerun the same command as before and the newly added/imported server addresses will be adjusted, the existing ones stay untouched.Happy crafting :) Edited September 3Sep 3 by McFex
Wednesday at 06:49 PM4 days Asking again... if I need to ask elsewhere please let me know as I would like to get this server back up and running. When started, the container appears to start, but the crafty web interface does not start and I get the following logged error...2026-09-09 04:52:01,400 DEBG 'start-script' stderr output:File "/opt/crafty/main.py", line 462, in <module>controller.servers.init_all_servers()~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^File "/opt/crafty/app/classes/controllers/servers_controller.py", line 270, in init_all_servers"server_obj": ServerInstance(~~~~~~~~~~~~~~^server.get("server_id"),^^^^^^^^^^^^^^^^^^^^^^^^...<5 lines>...self.import_helper,^^^^^^^^^^^^^^^^^^^),^File "/opt/crafty/app/classes/shared/server.py", line 285, in initself.player_cache = list(json.load(f).values())~~~~~~~~~^^^File "/usr/lib/python3.14/json/__init__.py", line 298, in loadreturn loads(fp.read(),cls=cls, object_hook=object_hook,parse_float=parse_float, parse_int=parse_int,parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)File "/usr/lib/python3.14/json/__init__.py", line 352, in loadsreturn defaultdecoder.decode(s)~~~~~~~~~~~~~~~~~~~~~~~^^^File "/usr/lib/python3.14/json/decoder.py", line 345, in decodeobj, end = self.raw_decode(s, idx=_w(s, 0).end())~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^File "/usr/lib/python3.14/json/decoder.py", line 363, in raw_decoderaise JSONDecodeError("Expecting value", s, err.value) from Nonejson.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)2026-09-09 04:52:01,512 DEBG fd 9 closed, stopped monitoring <POutputDispatcher at 23165816542880 for <Subprocess at 23165817830576 with name start-script in state RUNNING> (stdout)>2026-09-09 04:52:01,512 DEBG fd 11 closed, stopped monitoring <POutputDispatcher at 23165816476752 for <Subprocess at 23165817830576 with name start-script in state RUNNING> (stderr)>2026-09-09 04:52:01,512 WARN exited: start-script (exit status 1; not expected)2026-09-09 04:52:01,512 DEBG received SIGCHLD indicating a child quit2026-09-09 13:44:16,213 WARN received SIGTERM indicating exit request
Wednesday at 07:06 PM4 days Author 14 minutes ago, mattw said:Asking again... if I need to ask elsewhere please let me know as I would like to get this server back up and running. When started, the container appears to start, but the crafty web interface does not start and I get the following logged error...i would suspect the issue is corrupt configuration, but your best bet for support is to talk directly to the crafty dev's, raise a issue here:- https://gitlab.com/crafty-controller/crafty-4/-/boards#/ or if you prefer chat then talk to them on discord:- https://discord.com/invite/XR5x3ZM
Wednesday at 07:11 PM4 days I will try to do that this evening! You are not the dev? Only the person that supplies the Unraid container? Just trying to understand the pecking order here. Thanks Matt
Wednesday at 07:25 PM4 days Author 13 minutes ago, mattw said:You are not the dev? Only the person that supplies the Unraid container?you got it, i dont have anything to do with the code if crafty, i simply package up what is supplied by the crafty dev's into a unraid user friendly format.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.