Unable to self-host with "Single Community"

(#583) Bug Fixed self-hosting

Summary

When I try to complete the wizard selecting the "Single Community" option, it does not complete.

Steps to reproduce

  1. Start wizard
  2. Select "Single Community" option
  3. Try to finish wizard

Environment

Ubuntu 26.04 Docker version 29.5.3, Docker Compose version v5.1.4

Logs or screenshots

Failed to load resource: the server responded with a status of 400 ()
AppLogger.ts:117 [10:26:16] [SelfHostedSetupWizardGate] [Error] Failed to complete instance setup HttpError: [400] POST /admin/instance-config/update
    at RestTransport.ts:593:10
    at Generator.next (<anonymous>)
    at s (8cbe6afe043ceca0.js:14:179733)
    at o (8cbe6afe043ceca0.js:14:179930)

Merged posts

These posts were merged into this one. Their comments are now part of the conversation below, marked with where they came from.

Merged from #640 [Self-Hosted] This instance policy change is not allowed

RexSystemoriginally by @timjrobinson on GitHub

Report details

Summary

I'm setting up a brand new Fluxer instance on my home server, I just want a private Discord I can use with friends. I followed all instructions in the setup guide but after going through the initial server setup in the web UI I'm getting an error "This instance policy change is not allowed" without any further details. How do I know what policy it's talking about? What did I do wrong here?

Steps to reproduce

Follow the getting started guide: https://docs.fluxer.app/operator/get-started/ On instance setup through the web ui choose the following settings:
  • Product Name: Games
  • Who can join: Open
  • Single community mode
  • Community Name: Games
  • Choose setup later for all options

Environment

Version: Main commit fa3e8525755dae087c03ceaf83b814cbe46c7228 Browser: Firefox tim@emrakul:~/projects/fluxer$ uname -a Linux emrakul 6.1.0-44-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.164-1 (2026-03-09) x86_64 GNU/Linux

Logs or screenshots

image
  • 609642627-40de092a-1009-48c2-b9e1-1ab0ec6feece.png

    609642627-40de092a-1009-48c2-b9e1-1ab0ec6feece.png

    525×590 | 34 kB

13 comments

Sign in with Fluxer to comment and vote.
Comment by @ComagHaveFun
RexSystem 1 vote edited originally by @ComagHaveFun on GitHub
Same here. Response of [400] POST /admin/instance-config/update: {"code":"INSTANCE_POLICY_TRANSITION_NOT_ALLOWED","message":"This instance policy change is not allowed."} Edit: Seems that setup was already completed somehow, maybe was related to #587 that caused 500 Internal Server Error on first completion attempt.
Comment by @schemen
RexSystem 1 vote originally by @schemen on GitHub
I do seem to run into the same issue as well.
Comment by @schemen
RexSystem 1 vote originally by @schemen on GitHub
It's a small bug in the setup process. As a workaround, you can run this once everything started up. Please note, do this at your own risk, this changes a flag in the code.
docker exec fluxer-api-1 sed -i \
  's/appPublic\.setup\.configured || current\.single_community_locked/current.single_community_locked/' \
  /usr/src/app/fluxer_api/src/api/admin/controllers/InstanceConfigAdminController.ts
Restart the api container docker restart fluxer-api-1 Now you should be able to finish the setup. Once done, clean up by fully replacing the api container back to the unmodified one:
docker compose down api
docker compose up -d
Please note, this is a blunt tool, and it worked on my instance, it's not fixing the ordering. It's located here: https://github.com/fluxerapp/fluxer/blob/fa3e8525755dae087c03ceaf83b814cbe46c7228/fluxer_api/src/api/admin/controllers/InstanceConfigAdminController.ts#L258
Comment by @timjrobinson
RexSystem 1 vote Merged from #640 originally by @timjrobinson on GitHub
I set claude on the diagnosis and it found that an earlier setup in the process marked the setup as configured when the admin account was bootstrapped but then the server refused to enable policy.single_community_enabled because the server was configured (I've only been going through the main setup flow once, I haven't restarted it or tried to do a new setup). Claude notes:
Confirmed the root cause. Here's your current stored state:

  - app_public_config → setup.configured: **true**
  - admin_bootstrapped → true
  - instance_policy_config → does not exist (single-community mode was never successfully enabled)

  So what happened: an earlier step already marked setup as configured and bootstrapped your admin account. Now the final "Finish
  Setup" click sends policy.single_community_enabled: true, but the server refuses to enable single-community ("one server") mode once
  setup.configured is already true — hence the 400 on every retry. You're in a stuck loop.
Comment by @timjrobinson
RexSystem 1 vote Merged from #640 originally by @timjrobinson on GitHub
When I went back to the main domain the server was already configured in multi community mode and I could create a community there. It seems setting up as a single community is currently broken.
Comment by @whenbearsreign
RexSystem 1 vote edited originally by @whenbearsreign on GitHub
It's a small bug in the setup process. As a workaround, you can run this once everything started up. Please note, do this at your own risk, this changes a flag in the code.
docker exec fluxer-api-1 sed -i \
  's/appPublic\.setup\.configured || current\.single_community_locked/current.single_community_locked/' \
  /usr/src/app/fluxer_api/src/api/admin/controllers/InstanceConfigAdminController.ts
Restart the api container docker restart fluxer-api-1 Now you should be able to finish the setup. Once done, clean up by fully replacing the api container back to the unmodified one:
docker compose down api
docker compose up -d
Please note, this is a blunt tool, and it worked on my instance, it's not fixing the ordering. It's located here: fluxer/fluxer_api/src/api/admin/controllers/InstanceConfigAdminController.ts Line 258 in [fa3e852](/fluxerapp/fluxer/commit/fa3e8525755dae087c03ceaf83b814cbe46c7228) if (data.app_public) {
Thanks @schemen for this, I have created a new repo that uses this structure for patching but also helps you export and then import a premade community into the new Single Community instance. https://github.com/whenbearsreign/Fluxer-Guild-to-Single-Community
Comment by @zixhaa
RexSystem 1 vote originally by @zixhaa on GitHub
I was able to get single community mode enabled, but new users do not auto-join the guild as expected upon account creation. The guild ID is listed correctly in the admin panel under single community. Is there somewhere in the DB where this functionality is configured? If so, how can I confirm that it is set correctly?
Comment by @whenbearsreign
RexSystem 1 vote edited originally by @whenbearsreign on GitHub
I was able to get single community mode enabled, but new users do not auto-join
@zixhaa I did not experience this issue, users were able to auto-join when creating an account for me. I did not share a "guild invite" but instead just gave them the URL and it presented them with a "create an account" screen and they got in without additional steps. Try the URL without the /INVITE= and see if it lets them in.
Comment by @zixhaa
RexSystem 1 vote edited originally by @zixhaa on GitHub
> I was able to get single community mode enabled, but new users do not auto-join @zixhaa I did not experience this issue, users were able to auto-join when creating an account for me. I did not share a "guild invite" but instead just gave them the URL and it presented them with a "create an account" screen and they got in without additional steps. Try the URL without the /INVITE= and see if it lets them in.
@whenbearsreign Okay, so, I did some testing. It seems to be related to registration policy; if approval is required and you do not use a registration URL to create an account, the user will not auto-join the server. I was able to auto-join with both open registration and closed/approval-required + a registration URL, but not approval-required + no registration URL. Can you test this behavior on your instance?
Comment by @whenbearsreign
RexSystem 1 vote edited originally by @whenbearsreign on GitHub
@zixhaa I confirmed the same test with the same parameters. When set to "Closed", auto-join worked when using the Admin-Issued Registration URL with "Approval required" unchecked ⬛, it auto-joined the guild upon completing registration. When testing it with "Approval required" checked ✅, then it created the account but did not auto-join the guild and left the account hanging without a guild.