[GH-ISSUE #1447] Self-Hosted Server Update #603

Open
opened 2026-10-13 20:24:57 +00:00 by bsakaguchi · 7 comments
Owner

Originally created by @the-aLeXiS on GitHub (Mar 3, 2025).
Original GitHub issue: https://github.com/amnezia-vpn/amnezia-client/issues/1447

How to update Self-Hosted Server side or does it update automatically?

Originally created by @the-aLeXiS on GitHub (Mar 3, 2025). Original GitHub issue: https://github.com/amnezia-vpn/amnezia-client/issues/1447 How to update Self-Hosted Server side or does it update automatically?
Author
Owner

@constantvalue commented on GitHub (Mar 4, 2025):

Same question. How we can update docker container. Is there any tutorial or walkaround?

<!-- gh-comment-id:2698331736 --> @constantvalue commented on GitHub (Mar 4, 2025): Same question. How we can update docker container. Is there any tutorial or walkaround?
Author
Owner

@LordMerlin commented on GitHub (Apr 4, 2025):

Install Watchtower. If amnezia docker update, watchtower automatic update.

<!-- gh-comment-id:2777840995 --> @LordMerlin commented on GitHub (Apr 4, 2025): Install Watchtower. If amnezia docker update, watchtower automatic update.
Author
Owner

@jokaorgua commented on GitHub (Jun 27, 2025):

Install Watchtower. If amnezia docker update, watchtower automatic update.

I've seen in other tickets related to the update that in this case all profiles will be lost. Not sure if that true, haven't examined by myself

<!-- gh-comment-id:3011800651 --> @jokaorgua commented on GitHub (Jun 27, 2025): > Install Watchtower. If amnezia docker update, watchtower automatic update. I've seen in other tickets related to the update that in this case all profiles will be lost. Not sure if that true, haven't examined by myself
Author
Owner

@spaghetti-coder commented on GitHub (Aug 25, 2025):

Same question from me. Although can think of some tricks how to do it on the server (not via the app) without reinstalling all protocols (never did though), they are still hacks

Install Watchtower. If amnezia docker update, watchtower automatic update.

  1. IMO, almost never a good idea for "latest" tag. You never know what backward incompatible changes are brought by a newer version.
  2. Seems like the client app builds images on the server on a protocol installation and some of them are not even based on Amnezia images (like xray or dns). Build manifests reside in /opt/amnezia directory of the server. I.e. Watchtower is useless here
<!-- gh-comment-id:3219663226 --> @spaghetti-coder commented on GitHub (Aug 25, 2025): Same question from me. Although can think of some tricks how to do it on the server (not via the app) without reinstalling all protocols (never did though), they are still hacks > Install Watchtower. If amnezia docker update, watchtower automatic update. 1. IMO, almost never a good idea for "latest" tag. You never know what backward incompatible changes are brought by a newer version. 2. Seems like the client app builds images on the server on a protocol installation and some of them are not even based on Amnezia images (like xray or dns). Build manifests reside in `/opt/amnezia` directory of the server. I.e. Watchtower is useless here
Author
Owner

@4rgon4ut commented on GitHub (Dec 26, 2025):

Just did with xray manually(server side), works fine so far
*Note that example is specifically targets xray, but applies to others with the same configuration strategy

Configuration and keys injected during setup so we first need to derive them from container for backup purposes:

mkdir -p /opt/amnezia/amnezia-xray/backup_data

docker cp amnezia-xray:/opt/amnezia/xray/. /opt/amnezia/amnezia-xray/backup_data/

Then update docker file at /opt/amnezia/amnezia-xray/Dockerfile

Remove the old container and build the new one:

docker rm -f amnezia-xray

docker build -t amnezia-xray:latest /opt/amnezia/amnezia-xray/

Run:

docker run -d \
  --name amnezia-xray \
  -p <YOUR_PORT>:<YOUR_PORT> \
  -p <YOUR_PORT>:<YOUR_PORT>/udp \
  --restart unless-stopped \
  --privileged \
  amnezia-xray:latest

Inject configs back:

docker cp /opt/amnezia/amnezia-xray/backup_data/. amnezia-xray:/opt/amnezia/xray/

Ignite:

docker exec -d amnezia-xray /opt/amnezia/xray/xray run -c /opt/amnezia/xray/server.json

Bandaid automation may look like:

  • Watching and pulling new release sources
  • Derive new docker files
  • Automate swapping I described above
<!-- gh-comment-id:3693141982 --> @4rgon4ut commented on GitHub (Dec 26, 2025): Just did with xray manually(server side), works fine so far *Note that example is specifically targets xray, but applies to others with the same configuration strategy **Configuration and keys injected during setup so we first need to derive them from container for backup purposes:** ```shell mkdir -p /opt/amnezia/amnezia-xray/backup_data docker cp amnezia-xray:/opt/amnezia/xray/. /opt/amnezia/amnezia-xray/backup_data/ ``` **Then update docker file at `/opt/amnezia/amnezia-xray/Dockerfile`** **Remove the old container and build the new one:** ```shell docker rm -f amnezia-xray docker build -t amnezia-xray:latest /opt/amnezia/amnezia-xray/ ``` **Run:** ```shell docker run -d \ --name amnezia-xray \ -p <YOUR_PORT>:<YOUR_PORT> \ -p <YOUR_PORT>:<YOUR_PORT>/udp \ --restart unless-stopped \ --privileged \ amnezia-xray:latest ``` **Inject configs back:** ```shell docker cp /opt/amnezia/amnezia-xray/backup_data/. amnezia-xray:/opt/amnezia/xray/ ``` **Ignite:** ```shell docker exec -d amnezia-xray /opt/amnezia/xray/xray run -c /opt/amnezia/xray/server.json ``` --- Bandaid automation may look like: - Watching and pulling new release sources - Derive new docker files - Automate swapping I described above
Author
Owner

@ivan-ololo commented on GitHub (Mar 27, 2026):

Hello! Need help.

Remove the old container and build the new one:
Run:

I uninstalled and reinstalled the container through the app Amnezia. Is this correct?

Ignite:

docker exec -d amnezia-xray /opt/amnezia/xray/xray run -c /opt/amnezia/xray/server.json

How need execut "Ignite" for amnezia-awg? I didn't find any *.json files in the /opt/amnezia/awg directory...
After inject configs back (from the backup), i restarted the container (used command "docker restart" ), and it started, but the connection via Amnezia does not work.

<!-- gh-comment-id:4145239760 --> @ivan-ololo commented on GitHub (Mar 27, 2026): Hello! Need help. > **Remove the old container and build the new one:** > **Run:** I uninstalled and reinstalled the container through the app Amnezia. Is this correct? > **Ignite:** > > docker exec -d amnezia-xray /opt/amnezia/xray/xray run -c /opt/amnezia/xray/server.json How need execut "Ignite" for amnezia-awg? I didn't find any *.json files in the /opt/amnezia/awg directory... After inject configs back (from the backup), i restarted the container (used command "docker restart" ), and it started, but the connection via Amnezia does not work.
Author
Owner

@cbytl commented on GitHub (Jun 15, 2026):

How need execut "Ignite" for amnezia-awg? I didn't find any *.json files in the /opt/amnezia/awg directory...
After inject configs back (from the backup), i restarted the container (used command "docker restart" ), and it started, but the connection via Amnezia does not work.

try
docker exec -d amnezia-xray /opt/amnezia/start.sh

<!-- gh-comment-id:4711053214 --> @cbytl commented on GitHub (Jun 15, 2026): > How need execut "Ignite" for amnezia-awg? I didn't find any *.json files in the /opt/amnezia/awg directory... After inject configs back (from the backup), i restarted the container (used command "docker restart" ), and it started, but the connection via Amnezia does not work. try docker exec -d amnezia-xray /opt/amnezia/start.sh
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
amnezia-vpn/amnezia-client#603
No description provided.