AmneziaWG
Keywords
| Keyword | Definition |
|---|---|
| đĄïž AmneziaWG | A fork of WireGuard that randomizes packet headers, sizes, and timing to resist Deep Packet Inspection while keeping the same audited cryptography. It is the protocol that runs on your server. |
| đ AmneziaWG 2.0 | The current major version that uses dynamic header ranges (instead of fixed values), adds data-level padding (S4), and supports Custom Protocol Signature decoy packets for stronger DPI evasion. |
| đ Deep Packet Inspection (DPI) | A network filtering technique used by ISPs and governments to identify and block VPN traffic by analyzing packet headers, sizes, and handshake patterns. AmneziaWG is specifically designed to defeat it. |
| ⥠WireGuard | A fast, modern VPN protocol with a small codebase and kernel-level performance. It is easily fingerprinted by DPI systems due to its fixed packet structure, which is what AmneziaWG was built to fix. |
| đ Self-hosted VPN | A VPN you deploy and manage on your own server (typically a VPS) rather than subscribing to a commercial provider. You control the keys, config, and infrastructure. |
| đ§ DKMS (Dynamic Kernel Module Support) | A Linux framework that automatically recompiles kernel modules when the system kernel is updated. The AmneziaWG installer uses DKMS to build the high-performance kernel module. |
| đ Obfuscation | The practice of disguising VPN traffic to look like ordinary internet traffic. AmneziaWG obfuscates at the transport layer by randomizing headers, adding padding, sending decoy packets, and firing junk packets. |
| đ Split tunneling | A routing configuration where only specific traffic (e.g., blocked sites) goes through the VPN while the rest uses your direct connection. Useful in countries with partial censorship. |
| đ„ïž KVM vs LXC | KVM is full virtualization with a dedicated kernel, required for loading custom kernel modules like AmneziaWG. LXC is container-based virtualization that shares the host kernel and cannot load custom modules. |
| đȘ CPS (Custom Protocol Signature) | An AmneziaWG 2.0 feature that sends decoy packets mimicking other protocols (QUIC, DNS, SIP) before the real handshake, fooling DPI systems into classifying the traffic as normal. |
Self-Host an AmneziaWG VPN Server â Complete Guide

AmneziaWG is a protocol designed to solve a specific problem: how do you get WireGuard’s speed when the networks you’re connecting through actively try to block it? It’s a fork of WireGuard built by the Amnezia VPN team, and it does one thing that the original doesn’t â it randomizes the transport layer so Deep Packet Inspection systems can’t fingerprint it. The encryption underneath stays exactly the same. What changes is how the packets look on the wire.
The broader landscape of VPN obfuscation has been an arms race for years. Tools like Shadowsocks, VLESS+Reality, and OpenVPN with obfs4 all attempt to disguise traffic in different ways â some as proxies, some as full tunnels, some with heavy performance costs. AmneziaWG sits in a specific niche: it’s a full VPN tunnel with WireGuard-level performance and built-in DPI resistance, all in one package. And since it’s open-source, you can self-host it on your own server.
But here’s the problem that makes this necessary. You set up WireGuard. It works perfectly â fast, clean, reliable. Then one day it stops. No error message, no timeout, no connection refused. The packets just vanish. That’s what DPI blocking looks like in practice: your tunnel is still running, your config is still correct, and nothing gets through. This is the reality in Russia (where WireGuard has roughly a 12% success rate), Iran (98% packet loss), and a growing list of countries including China, Egypt, UAE, Turkey, Belarus, Uzbekistan, Kazakhstan, Myanmar, and Pakistan.

Traditional alternatives don’t fully solve this. Shadowsocks is a proxy, not a full VPN tunnel â your DNS and non-TCP traffic still leak. OpenVPN with obfs4 works but carries roughly 25% performance overhead. VLESS+Reality offers strong obfuscation but is proxy-based and complex to configure. AmneziaWG fills the gap: a complete VPN tunnel with WireGuard’s speed and DPI resistance baked in.
This guide walks you through deploying a fully functional AmneziaWG 2.0 server on any KVM VPS in under 15 minutes using a single community installer script. By the end, you’ll have a working VPN tunnel you can connect to from any device. The steps are provider-agnostic â they work on any VPS with root SSH access, whether that’s from AlexHost, AvaHost, or elsewhere. This is written for intermediate tech users who are comfortable with SSH and basic Linux commands.
One clarification before we start: AmneziaWG is the protocol. AmneziaVPN is the client app that connects to it. They’re related but distinct â like TLS is to your browser. You’ll need the app to connect, but the protocol is what runs on your server.
But before we deploy anything, you need to understand what makes AmneziaWG different from WireGuard â and why that difference matters when DPI is watching.
What Is AmneziaWG? (The Mental Model)
WireGuard is elegant by design. It has a small codebase, uses modern cryptography, and runs in the Linux kernel for near-native performance. But that elegance comes with a visibility problem: every WireGuard packet carries the same fixed header structure, the same fixed packet sizes, and the same handshake pattern. To a Deep Packet Inspection system, a WireGuard tunnel has a signature as clear as a barcode. Once a DPI box learns that signature, it can drop every packet without blocking the port or closing the connection.

Think of it this way. WireGuard is like a courier who always wears the same uniform â fast, reliable, and efficient. But anyone watching the road learns to recognize that uniform and can stop the courier at any checkpoint. AmneziaWG is the same courier carrying the same packages, but they change uniforms at every checkpoint. Same person, same cargo, completely different appearance.
The version history matters here. AmneziaWG 1.x introduced custom headers that differed from WireGuard’s fixed values â it helped for a while, but DPI systems adapted. AmneziaWG 2.0, released in late 2025, randomizes everything: headers change per packet, padding varies per message, and decoy packets mimic other protocols before the real handshake begins. There is no universal signature to detect because every AmneziaWG 2.0 server generates its own unique parameter set. Each server speaks its own dialect.
When all obfuscation parameters are set to zero, AmneziaWG behaves identically to WireGuard â it’s fully backward compatible at the protocol level. But with parameters active (which is the default), it becomes something WireGuard cannot be: a fast VPN tunnel that DPI systems struggle to identify.
So how exactly does AmneziaWG scramble its traffic? Let’s look at the four obfuscation layers that make DPI blind â and why they add almost no speed cost.
How AmneziaWG Hides From DPI (Without Losing Speed)
AmneziaWG 2.0 uses four layered obfuscation techniques that work together. Each one targets a different way DPI systems identify VPN traffic. Together, they make every server’s traffic look unique.
Dynamic Headers (H1âH4)
WireGuard uses fixed 32-bit message type identifiers:
- 1 â for initiation
- 2 â for response
- 3 â for cookie reply
- 4 â for data
A DPI box scanning traffic just looks for these values. AmneziaWG 2.0 replaces each fixed value with a random number drawn from a configured range. The initiation header (H1) might be any value between 234567 and 345678. The response header (H2) might be between 3456789 and 4567890. These ranges never overlap â the protocol still needs to distinguish packet types internally â but to an outside observer, there’s no single header value to latch onto. Every packet looks different from the last.
Random Padding (S1âS4)
WireGuard’s initiation packet is always exactly 148 bytes. Its response is always exactly 92 bytes. These fixed sizes are another fingerprint. AmneziaWG adds random padding to each packet type: the initiation becomes 148+S1 bytes, the response becomes 92+S2 bytes, the cookie reply becomes 64+S3 bytes, and every data packet gets S4 bytes of padding. S3 and S4 are new in version 2.0 â and S4 is the most significant addition because it touches every single data packet, making session-wide traffic analysis much harder.
There’s one critical constraint: S1+56 must not equal S2. Since the original size difference between initiation and response is 56 bytes (148â92), if the padding values happened to compensate for exactly that difference, the two padded packets would end up the same size â recreating the fingerprint AmneziaWG is trying to eliminate. The installer’s parameter generator enforces this constraint automatically.
Custom Protocol Signature (I1âI5)
Before the real WireGuard handshake begins, the AmneziaWG client sends up to five decoy packets that mimic other protocols â QUIC, DNS, SIP, or custom byte patterns. The server ignores these packets entirely. It just waits for the real handshake.
- A simple configuration: Sends 128 random bytes <r 128>.
- A sophisticated configuration: Sends bytes that look like a QUIC connection initiation (<b 0xc000000001><r 64><t>), complete with a Unix timestamp.
To a DPI system watching the session start, the first packets look like normal web traffic.
Junk Packets (Jc, Jmin, Jmax)
After the decoy packets, the client fires a configurable number of junk packets â pure noise with random sizes between Jmin and Jmax. These blur the timing and size profile of the session start, making it harder for DPI systems to identify where the real handshake begins.
The Speed Question
There’s a number that’s been circulating online: AmneziaWG has 65% overhead. That figure is real, but it refers to the userspace Go implementation â not the kernel module. The community installer used in this guide builds a DKMS kernel module, and the kernel module adds less than 12% overhead total â closer to 3% in real-world benchmarks. On an uncensored network, you’d see roughly 95 Mbps through WireGuard and 92 Mbps through AmneziaWG 2.0. In a censored network, the comparison is 92 Mbps versus zero.
The following table summarizes the parameters the installer generates automatically:
| Parameter | Generated Range | Example Value |
|---|---|---|
Jc (junk packet count) | 4â8 | 6 |
Jmin (min junk size) | 40â89 | 55 |
Jmax (max junk size) | Jmin+100 to Jmin+500 | 380 |
S1 (init padding) | 15â150 | 72 |
S2 (response padding) | 15â150, S1+56â S2 | 56 |
S3 (cookie padding) | 8â55 | 32 |
S4 (data padding) | 4â27 | 16 |
H1 (init header range) | uint32 non-overlapping | 234567-345678 |
H2 (response header range) | uint32 non-overlapping | 3456789-4567890 |
H3 (cookie header range) | uint32 non-overlapping | 56789012-67890123 |
H4 (data header range) | uint32 non-overlapping | 456789012-567890123 |
I1 (CPS packet) | <r N> format | <r 128> |
You don’t need to set any of these manually. The installer generates cryptographically random, constraint-valid values every time.
Now that you know how the obfuscation works, let’s see how AmneziaWG stacks up against the alternatives you might be considering.
AmneziaWG vs Alternatives â Quick Decision Guide

| WireGuard | AmneziaWG 2.0 | OpenVPN+obfs4 | Shadowsocks | VLESS+Reality | |
|---|---|---|---|---|---|
| DPI resistance | Low | High | Medium | Medium | Very High |
| Speed overhead | ~4% | <12% (~3% real-world) | ~25% | ~8% | ~10% |
| Full VPN tunnel | Yes | Yes | Yes | No (proxy) | No (proxy) |
| Runs in kernel | Yes | Yes (DKMS) | No | No | No |
| Setup complexity | Low | Low (with installer) | High | Medium | High |
| Transport | UDP | UDP | TCP/UDP | TCP | TCP |
The decision rules are straightforward:
- No DPI in your country? Use plain WireGuard. It’s simpler and has a larger ecosystem.
- Need maximum DPI resistance and OK with a proxy? VLESS+Reality is the strongest option for obfuscation, but it’s not a full tunnel.
- Want both speed and a full tunnel with obfuscation? AmneziaWG 2.0 is the only option that delivers WireGuard-grade performance with real DPI resistance in a complete VPN tunnel.
- Already using OpenVPN+obfs4 and it still works? No urgent need to switch, but AmneziaWG will be noticeably faster.
This article focuses on AmneziaWG because it’s the only protocol that gives you a full tunnel, kernel-level performance, and built-in obfuscation â all configured by a single script.
If AmneziaWG is the right choice for your situation, here’s exactly what you need before we start deploying.
What You’ll Need Before Starting
Before running the installer, make sure your environment meets these requirements:
| Requirement | Detail | Why |
|---|---|---|
| OS | Ubuntu 24.04 LTS (clean install). Ubuntu 25.10 is experimental. Debian 12/13 work but may needcurl pre-installed. | The installer is tested and fully supported on Ubuntu 24.04. |
| VPS specs | 1 vCore, 1 GB RAM, 25 GB storage. Any $3â5/month plan works. | The installer needs ~2 GB disk and ~1 GB RAM during the DKMS build. The running VPN uses negligible resources. |
| Virtualization | KVM (not OpenVZ, not LXC). | AmneziaWG loads a kernel module via DKMS. LXC shares the host kernel and cannot load custom modules. |
| SSH access | Root or sudo user with password/key authentication. | The installer must run as root. |
| SSH port | Default 22, or pre-opened in UFW if using a non-standard port. | If SSH isn’t on port 22 and you don’t pre-open it, the installer’s firewall setup will lock you out. |
| Client app | Amnezia VPN >= 4.8.12.7 (all platforms). | AWG 2.0 parameters are not understood by older clients. The standard WireGuard client does not support AWG at all. |
â ïž Warning: LXC containers are not supported. If your VPS uses LXC virtualization, the DKMS kernel module build will fail. You must use KVM or bare-metal. Check with your provider if you’re unsure.
â ïž Warning: If your SSH runs on a non-standard port (anything other than 22), you must open it in UFW before running the installer:
sudo ufw allow YOUR_PORT/tcpReplace
YOUR_PORTwith your actual SSH port. The installer enables UFW with a default-deny policy â if your SSH port isn’t allowed, you’ll be locked out immediately.
đĄ Tip: Wait 5â10 minutes after creating your VPS before running the installer. Cloud-init and background initialization processes can conflict with the
apt-getcalls the installer makes.
With your VPS ready and prerequisites confirmed, let’s deploy AmneziaWG 2.0 using the community installer script â the fastest and most transparent method.
Keywords
| Keyword | Definition |
|---|---|
| đĄïž AmneziaWG | A fork of WireGuard that randomizes packet headers, sizes, and timing to resist Deep Packet Inspection while keeping the same audited cryptography. It is the protocol that runs on your server. |
| đ AmneziaWG 2.0 | The current major version that uses dynamic header ranges (instead of fixed values), adds data-level padding (S4), and supports Custom Protocol Signature decoy packets for stronger DPI evasion. |
| đ Deep Packet Inspection (DPI) | A network filtering technique used by ISPs and governments to identify and block VPN traffic by analyzing packet headers, sizes, and handshake patterns. AmneziaWG is specifically designed to defeat it. |
| ⥠WireGuard | A fast, modern VPN protocol with a small codebase and kernel-level performance. It is easily fingerprinted by DPI systems due to its fixed packet structure, which is what AmneziaWG was built to fix. |
| đ Self-hosted VPN | A VPN you deploy and manage on your own server (typically a VPS) rather than subscribing to a commercial provider. You control the keys, config, and infrastructure. |
| đ§ DKMS (Dynamic Kernel Module Support) | A Linux framework that automatically recompiles kernel modules when the system kernel is updated. The AmneziaWG installer uses DKMS to build the high-performance kernel module. |
| đ Obfuscation | The practice of disguising VPN traffic to look like ordinary internet traffic. AmneziaWG obfuscates at the transport layer by randomizing headers, adding padding, sending decoy packets, and firing junk packets. |
| đ Split tunneling | A routing configuration where only specific traffic (e.g., blocked sites) goes through the VPN while the rest uses your direct connection. Useful in countries with partial censorship. |
| đ„ïž KVM vs LXC | KVM is full virtualization with a dedicated kernel, required for loading custom kernel modules like AmneziaWG. LXC is container-based virtualization that shares the host kernel and cannot load custom modules. |
| đȘ CPS (Custom Protocol Signature) | An AmneziaWG 2.0 feature that sends decoy packets mimicking other protocols (QUIC, DNS, SIP) before the real handshake, fooling DPI systems into classifying the traffic as normal. |
Self-Host an AmneziaWG VPN Server â Complete Guide

AmneziaWG is a protocol designed to solve a specific problem: how do you get WireGuard’s speed when the networks you’re connecting through actively try to block it? It’s a fork of WireGuard built by the Amnezia VPN team, and it does one thing that the original doesn’t â it randomizes the transport layer so Deep Packet Inspection systems can’t fingerprint it. The encryption underneath stays exactly the same. What changes is how the packets look on the wire.
The broader landscape of VPN obfuscation has been an arms race for years. Tools like Shadowsocks, VLESS+Reality, and OpenVPN with obfs4 all attempt to disguise traffic in different ways â some as proxies, some as full tunnels, some with heavy performance costs. AmneziaWG sits in a specific niche: it’s a full VPN tunnel with WireGuard-level performance and built-in DPI resistance, all in one package. And since it’s open-source, you can self-host it on your own server.
But here’s the problem that makes this necessary. You set up WireGuard. It works perfectly â fast, clean, reliable. Then one day it stops. No error message, no timeout, no connection refused. The packets just vanish. That’s what DPI blocking looks like in practice: your tunnel is still running, your config is still correct, and nothing gets through. This is the reality in Russia (where WireGuard has roughly a 12% success rate), Iran (98% packet loss), and a growing list of countries including China, Egypt, UAE, Turkey, Belarus, Uzbekistan, Kazakhstan, Myanmar, and Pakistan.

Traditional alternatives don’t fully solve this. Shadowsocks is a proxy, not a full VPN tunnel â your DNS and non-TCP traffic still leak. OpenVPN with obfs4 works but carries roughly 25% performance overhead. VLESS+Reality offers strong obfuscation but is proxy-based and complex to configure. AmneziaWG fills the gap: a complete VPN tunnel with WireGuard’s speed and DPI resistance baked in.
This guide walks you through deploying a fully functional AmneziaWG 2.0 server on any KVM VPS in under 15 minutes using a single community installer script. By the end, you’ll have a working VPN tunnel you can connect to from any device. The steps are provider-agnostic â they work on any VPS with root SSH access, whether that’s from AlexHost, AvaHost, or elsewhere. This is written for intermediate tech users who are comfortable with SSH and basic Linux commands.
One clarification before we start: AmneziaWG is the protocol. AmneziaVPN is the client app that connects to it. They’re related but distinct â like TLS is to your browser. You’ll need the app to connect, but the protocol is what runs on your server.
But before we deploy anything, you need to understand what makes AmneziaWG different from WireGuard â and why that difference matters when DPI is watching.
What Is AmneziaWG? (The Mental Model)
WireGuard is elegant by design. It has a small codebase, uses modern cryptography, and runs in the Linux kernel for near-native performance. But that elegance comes with a visibility problem: every WireGuard packet carries the same fixed header structure, the same fixed packet sizes, and the same handshake pattern. To a Deep Packet Inspection system, a WireGuard tunnel has a signature as clear as a barcode. Once a DPI box learns that signature, it can drop every packet without blocking the port or closing the connection.

Think of it this way. WireGuard is like a courier who always wears the same uniform â fast, reliable, and efficient. But anyone watching the road learns to recognize that uniform and can stop the courier at any checkpoint. AmneziaWG is the same courier carrying the same packages, but they change uniforms at every checkpoint. Same person, same cargo, completely different appearance.
The version history matters here. AmneziaWG 1.x introduced custom headers that differed from WireGuard’s fixed values â it helped for a while, but DPI systems adapted. AmneziaWG 2.0, released in late 2025, randomizes everything: headers change per packet, padding varies per message, and decoy packets mimic other protocols before the real handshake begins. There is no universal signature to detect because every AmneziaWG 2.0 server generates its own unique parameter set. Each server speaks its own dialect.
When all obfuscation parameters are set to zero, AmneziaWG behaves identically to WireGuard â it’s fully backward compatible at the protocol level. But with parameters active (which is the default), it becomes something WireGuard cannot be: a fast VPN tunnel that DPI systems struggle to identify.
So how exactly does AmneziaWG scramble its traffic? Let’s look at the four obfuscation layers that make DPI blind â and why they add almost no speed cost.
How AmneziaWG Hides From DPI (Without Losing Speed)
AmneziaWG 2.0 uses four layered obfuscation techniques that work together. Each one targets a different way DPI systems identify VPN traffic. Together, they make every server’s traffic look unique.
Dynamic Headers (H1âH4)
WireGuard uses fixed 32-bit message type identifiers:
- 1 â for initiation
- 2 â for response
- 3 â for cookie reply
- 4 â for data
A DPI box scanning traffic just looks for these values. AmneziaWG 2.0 replaces each fixed value with a random number drawn from a configured range. The initiation header (H1) might be any value between 234567 and 345678. The response header (H2) might be between 3456789 and 4567890. These ranges never overlap â the protocol still needs to distinguish packet types internally â but to an outside observer, there’s no single header value to latch onto. Every packet looks different from the last.
Random Padding (S1âS4)
WireGuard’s initiation packet is always exactly 148 bytes. Its response is always exactly 92 bytes. These fixed sizes are another fingerprint. AmneziaWG adds random padding to each packet type: the initiation becomes 148+S1 bytes, the response becomes 92+S2 bytes, the cookie reply becomes 64+S3 bytes, and every data packet gets S4 bytes of padding. S3 and S4 are new in version 2.0 â and S4 is the most significant addition because it touches every single data packet, making session-wide traffic analysis much harder.
There’s one critical constraint: S1+56 must not equal S2. Since the original size difference between initiation and response is 56 bytes (148â92), if the padding values happened to compensate for exactly that difference, the two padded packets would end up the same size â recreating the fingerprint AmneziaWG is trying to eliminate. The installer’s parameter generator enforces this constraint automatically.
Custom Protocol Signature (I1âI5)
Before the real WireGuard handshake begins, the AmneziaWG client sends up to five decoy packets that mimic other protocols â QUIC, DNS, SIP, or custom byte patterns. The server ignores these packets entirely. It just waits for the real handshake.
- A simple configuration: Sends 128 random bytes <r 128>.
- A sophisticated configuration: Sends bytes that look like a QUIC connection initiation (<b 0xc000000001><r 64><t>), complete with a Unix timestamp.
To a DPI system watching the session start, the first packets look like normal web traffic.
Junk Packets (Jc, Jmin, Jmax)
After the decoy packets, the client fires a configurable number of junk packets â pure noise with random sizes between Jmin and Jmax. These blur the timing and size profile of the session start, making it harder for DPI systems to identify where the real handshake begins.
The Speed Question
There’s a number that’s been circulating online: AmneziaWG has 65% overhead. That figure is real, but it refers to the userspace Go implementation â not the kernel module. The community installer used in this guide builds a DKMS kernel module, and the kernel module adds less than 12% overhead total â closer to 3% in real-world benchmarks. On an uncensored network, you’d see roughly 95 Mbps through WireGuard and 92 Mbps through AmneziaWG 2.0. In a censored network, the comparison is 92 Mbps versus zero.
The following table summarizes the parameters the installer generates automatically:
| Parameter | Generated Range | Example Value |
|---|---|---|
Jc (junk packet count) | 4â8 | 6 |
Jmin (min junk size) | 40â89 | 55 |
Jmax (max junk size) | Jmin+100 to Jmin+500 | 380 |
S1 (init padding) | 15â150 | 72 |
S2 (response padding) | 15â150, S1+56â S2 | 56 |
S3 (cookie padding) | 8â55 | 32 |
S4 (data padding) | 4â27 | 16 |
H1 (init header range) | uint32 non-overlapping | 234567-345678 |
H2 (response header range) | uint32 non-overlapping | 3456789-4567890 |
H3 (cookie header range) | uint32 non-overlapping | 56789012-67890123 |
H4 (data header range) | uint32 non-overlapping | 456789012-567890123 |
I1 (CPS packet) | <r N> format | <r 128> |
You don’t need to set any of these manually. The installer generates cryptographically random, constraint-valid values every time.
Now that you know how the obfuscation works, let’s see how AmneziaWG stacks up against the alternatives you might be considering.
AmneziaWG vs Alternatives â Quick Decision Guide

| WireGuard | AmneziaWG 2.0 | OpenVPN+obfs4 | Shadowsocks | VLESS+Reality | |
|---|---|---|---|---|---|
| DPI resistance | Low | High | Medium | Medium | Very High |
| Speed overhead | ~4% | <12% (~3% real-world) | ~25% | ~8% | ~10% |
| Full VPN tunnel | Yes | Yes | Yes | No (proxy) | No (proxy) |
| Runs in kernel | Yes | Yes (DKMS) | No | No | No |
| Setup complexity | Low | Low (with installer) | High | Medium | High |
| Transport | UDP | UDP | TCP/UDP | TCP | TCP |
The decision rules are straightforward:
- No DPI in your country? Use plain WireGuard. It’s simpler and has a larger ecosystem.
- Need maximum DPI resistance and OK with a proxy? VLESS+Reality is the strongest option for obfuscation, but it’s not a full tunnel.
- Want both speed and a full tunnel with obfuscation? AmneziaWG 2.0 is the only option that delivers WireGuard-grade performance with real DPI resistance in a complete VPN tunnel.
- Already using OpenVPN+obfs4 and it still works? No urgent need to switch, but AmneziaWG will be noticeably faster.
This article focuses on AmneziaWG because it’s the only protocol that gives you a full tunnel, kernel-level performance, and built-in obfuscation â all configured by a single script.
If AmneziaWG is the right choice for your situation, here’s exactly what you need before we start deploying.
What You’ll Need Before Starting
Before running the installer, make sure your environment meets these requirements:
| Requirement | Detail | Why |
|---|---|---|
| OS | Ubuntu 24.04 LTS (clean install). Ubuntu 25.10 is experimental. Debian 12/13 work but may needcurl pre-installed. | The installer is tested and fully supported on Ubuntu 24.04. |
| VPS specs | 1 vCore, 1 GB RAM, 25 GB storage. Any $3â5/month plan works. | The installer needs ~2 GB disk and ~1 GB RAM during the DKMS build. The running VPN uses negligible resources. |
| Virtualization | KVM (not OpenVZ, not LXC). | AmneziaWG loads a kernel module via DKMS. LXC shares the host kernel and cannot load custom modules. |
| SSH access | Root or sudo user with password/key authentication. | The installer must run as root. |
| SSH port | Default 22, or pre-opened in UFW if using a non-standard port. | If SSH isn’t on port 22 and you don’t pre-open it, the installer’s firewall setup will lock you out. |
| Client app | Amnezia VPN >= 4.8.12.7 (all platforms). | AWG 2.0 parameters are not understood by older clients. The standard WireGuard client does not support AWG at all. |
â ïž Warning: LXC containers are not supported. If your VPS uses LXC virtualization, the DKMS kernel module build will fail. You must use KVM or bare-metal. Check with your provider if you’re unsure.
â ïž Warning: If your SSH runs on a non-standard port (anything other than 22), you must open it in UFW before running the installer:
sudo ufw allow YOUR_PORT/tcpReplace
YOUR_PORTwith your actual SSH port. The installer enables UFW with a default-deny policy â if your SSH port isn’t allowed, you’ll be locked out immediately.
đĄ Tip: Wait 5â10 minutes after creating your VPS before running the installer. Cloud-init and background initialization processes can conflict with the
apt-getcalls the installer makes.
With your VPS ready and prerequisites confirmed, let’s deploy AmneziaWG 2.0 using the community installer script â the fastest and most transparent method.
Mots-clés
| Mot-clé | Définition |
|---|---|
| đĄïž AmneziaWG | Un fork de WireGuard qui randomise les en-tĂȘtes de paquets, les tailles et les dĂ©lais de transmission pour contrer l’inspection approfondie des paquets tout en conservant la mĂȘme cryptographie Ă©prouvĂ©e. Il s’agit d’un protocole qui s’exĂ©cute sur votre serveur. |
| đ AmneziaWG 2.0 | La version principale actuelle qui utilise des plages d’en-tĂȘtes dynamiques (au lieu de valeurs fixes), ajoute un remplissage au niveau des donnĂ©es (S4) et prend en charge les paquets de substitution avec une signature de protocole personnalisĂ©e pour une Ă©vasion DPI plus robuste. |
| đ Deep Packet Inspection (DPI) | Une technique de filtrage rĂ©seau utilisĂ©e par les FAI et les entitĂ©s gouvernementales pour identifier et bloquer le trafic VPN en analysant les en-tĂȘtes de paquets, les tailles et les modĂšles de poignĂ©e de main. AmneziaWG est spĂ©cifiquement conçu pour contrer cela. |
| ⥠WireGuard | Un protocole VPN rapide et moderne avec une petite base de code et des performances au niveau du noyau. Il est facilement identifiable par les systÚmes DPI en raison de sa structure de paquet fixe, ce qui a été résolu dans AmneziaWG. |
| đ VPN auto-hĂ©bergĂ© | Un VPN que vous dĂ©ployez et gĂ©rez sur votre propre serveur (gĂ©nĂ©ralement un VPS) plutĂŽt que de vous abonner Ă un fournisseur commercial. Vous contrĂŽlez les clĂ©s, la configuration et l’infrastructure. |
| đ§ DKMS (Dynamic Kernel Module Support) | Un framework Linux qui recompile automatiquement les modules du noyau lorsque le noyau du systĂšme est mis Ă jour. L’installateur AmneziaWG utilise DKMS pour construire un module noyau haute performance. |
| đ Obfuscation | La pratique de dĂ©guiser le trafic VPN pour le faire ressembler Ă du trafic Internet normal. AmneziaWG obfusque au niveau de la couche transport en randomisant les en-tĂȘtes, en ajoutant du remplissage, en envoyant des paquets de substitution et en gĂ©nĂ©rant des paquets de remplissage. |
| đ Split tunneling | Une configuration de routage oĂč seul le trafic spĂ©cifique (par exemple, les sites bloquĂ©s) passe par le VPN tandis que le reste du trafic utilise votre connexion directe. Utile dans les pays avec une censure partielle. |
| đ„ïž KVM vs LXC | KVM est la virtualisation complĂšte avec un noyau dĂ©diĂ© requis pour charger des modules noyau personnalisĂ©s comme AmneziaWG. LXC est la virtualisation par conteneur qui utilise le noyau partagĂ© de l’hĂŽte et ne peut pas charger de modules personnalisĂ©s. |
| đȘ CPS (Custom Protocol Signature) | Une fonctionnalitĂ© d’AmneziaWG 2.0 qui envoie des paquets de substitution imitant d’autres protocoles (QUIC, DNS, SIP) avant la poignĂ©e de main rĂ©elle, trompant les systĂšmes DPI en classant le trafic comme normal. |
đ Mise Ă jour (juillet 2026) : Ce guide conserve sa procĂ©dure pas Ă pas originale, mais la balise d’installateur Ă©pinglĂ©e affichĂ©e ci-dessous, v5.8.1, n’est plus Ă jour. La derniĂšre version de amneziawg-installer est v5.18.4, qui ajoute la prise en charge de Debian 12 et 13, les modules noyau ARM64 et Raspberry Pi prĂȘts Ă l’emploi, Ubuntu 25.10 et 26.04, le mode cascade et d’autres amĂ©liorations de sĂ©curitĂ©.
Si vous suivez ce guide aujourd’hui, remplacez la commande Ă©pinglĂ©e plus ancienne par
wget https://raw.githubusercontent.com/bivlked/amneziawg-installer/v5.18.4/install_amneziawg_en.shou vérifiez la balise actuelle sur la page de la derniÚre version avant de déployer.
DĂ©ploiement autonome du serveur VPN AmneziaWG â Guide complet

AmneziaWG est un protocole conçu pour rĂ©soudre un problĂšme spĂ©cifique : comment atteindre les vitesses de WireGuard lorsque les rĂ©seaux auxquels vous vous connectez tentent activement de le bloquer ? C’est un fork de WireGuard créé par l’Ă©quipe Amnezia VPN, et il fait ce que l’original ne fait pas â il randomise la couche transport afin que les systĂšmes d’inspection approfondie des paquets ne puissent pas l’identifier. Le chiffrement reste exactement le mĂȘme. Seule l’apparence des paquets sur le rĂ©seau change.
Le large paysage de l’obfuscation VPN a Ă©tĂ© une course aux armements au fil des annĂ©es. Des outils comme Shadowsocks, VLESS+Reality et OpenVPN avec obfs4 tentent de dĂ©guiser le trafic de diverses maniĂšres â certains en tant que proxies, d’autres en tant que tunnels complets, certains avec des coĂ»ts de performance Ă©levĂ©s. AmneziaWG occupe une niche spĂ©cifique : c’est un tunnel VPN complet avec des performances au niveau de WireGuard et une protection DPI intĂ©grĂ©e, le tout en un seul paquet. Et puisqu’il est open-source, vous pouvez le dĂ©ployer sur votre propre serveur.
Mais voici le problĂšme qui rend cela nĂ©cessaire. Vous configurez WireGuard. Cela fonctionne parfaitement â rapide, propre, fiable. Puis un beau jour, cela s’arrĂȘte. Aucun message d’erreur, aucun dĂ©lai d’attente, aucun refus de connexion. Les paquets disparaissent simplement. C’est Ă quoi ressemble le blocage DPI en pratique : votre tunnel est toujours opĂ©rationnel, votre configuration est toujours correcte, et rien ne passe. C’est dĂ©jĂ la rĂ©alitĂ© dans certains pays.

Les alternatives traditionnelles ne rĂ©solvent pas entiĂšrement ce problĂšme. Shadowsocks est un proxy, pas un tunnel VPN complet â votre DNS et votre trafic non-TCP fuiront toujours. OpenVPN avec obfs4 fonctionne mais a environ 25 % de surcharge de performance. VLESS+Reality offre une obfuscation forte mais est basĂ© sur proxy et complexe Ă configurer. AmneziaWG comble le vide : c’est un tunnel VPN complet avec des performances au niveau de WireGuard et une protection DPI intĂ©grĂ©e.
Ce guide vous guidera dans le dĂ©ploiement d’un serveur AmneziaWG 2.0 entiĂšrement fonctionnel sur n’importe quel VPS KVM en moins de 15 minutes en utilisant un seul script d’installation communautaire. Ă la fin, vous aurez un tunnel VPN fonctionnel auquel vous pourrez vous connecter Ă partir de n’importe quel appareil. Les Ă©tapes sont agnostiques du fournisseur â elles fonctionnent sur n’importe quel VPS avec accĂšs SSH et privilĂšges root, qu’il provienne d’AvaHost ou d’un autre. Ceci est Ă©crit pour les utilisateurs ayant un niveau de compĂ©tence technique intermĂ©diaire qui sont Ă l’aise avec SSH et les commandes Linux de base.
Une clarification avant de commencer : AmneziaWG est un protocole. AmneziaVPN est une application client qui s’y connecte. Ils sont liĂ©s mais distincts â comme TLS pour votre navigateur. Vous aurez besoin d’une application pour vous connecter, mais le protocole est ce qui s’exĂ©cute sur votre serveur.
Mais avant de dĂ©ployer quoi que ce soit, vous devez comprendre ce qui rend AmneziaWG diffĂ©rent de WireGuard â et pourquoi cette diffĂ©rence est importante lorsque DPI vous surveille.
Qu’est-ce qu’AmneziaWG ? (ModĂšle Mental)
WireGuard est Ă©lĂ©gant dans sa conception. Il possĂšde une petite base de code, utilise la cryptographie moderne et s’exĂ©cute dans le noyau Linux pour une performance quasi native. Mais cette Ă©lĂ©gance pose un problĂšme de visibilitĂ© : chaque paquet WireGuard porte la mĂȘme structure d’en-tĂȘte fixe, les mĂȘmes tailles de paquet fixes et le mĂȘme motif de handshake. Pour un systĂšme d’inspection approfondie des paquets, le tunnel WireGuard a une signature aussi claire qu’un code-barres. Une fois qu’un appareil DPI apprend cette signature, il peut supprimer chaque paquet sans bloquer le port ni fermer la connexion.

AmneziaWG est un fork de WireGuard-Go créé par l’Ă©quipe Amnezia VPN. Il a hĂ©ritĂ© de la simplicitĂ© architecturale de WireGuard â le mĂȘme Ă©change de clĂ©s Curve25519, le mĂȘme chiffrement ChaCha20-Poly1305, le mĂȘme handshake Noise IK. Toute la cryptographie reste inchangĂ©e et est Ă©galement vĂ©rifiĂ©e. Ce qu’AmneziaWG change, c’est la couche transport : les en-tĂȘtes de paquet, les tailles de paquet et les motifs de timing.
Pensez-y de cette façon. WireGuard est comme un coursier qui porte toujours le mĂȘme uniforme â rapide, fiable et efficace. Mais quiconque observe la route apprend Ă reconnaĂźtre cet uniforme et peut arrĂȘter le coursier Ă chaque point de contrĂŽle. AmneziaWG est le mĂȘme coursier transportant les mĂȘmes colis, mais il change d’uniforme Ă chaque point de contrĂŽle. La mĂȘme personne, la mĂȘme cargaison, une apparence complĂštement diffĂ©rente.
L’historique des versions est important. AmneziaWG 1.x a introduit des en-tĂȘtes personnalisĂ©s qui diffĂ©raient des valeurs fixes de WireGuard â cela a aidĂ© pendant un temps, mais les systĂšmes DPI se sont adaptĂ©s. AmneziaWG 2.0, publiĂ© fin 2025, randomise tout : les en-tĂȘtes changent de paquet en paquet, le remplissage varie de message en message, et les paquets de substitution imitent d’autres protocoles avant le vĂ©ritable handshake. Il n’y a pas de signature universelle pour la dĂ©tection car chaque serveur AmneziaWG 2.0 gĂ©nĂšre son propre ensemble unique de paramĂštres. Chaque serveur parle son propre dialecte.
Lorsque tous les paramĂštres d’obfuscation sont dĂ©finis Ă zĂ©ro, AmneziaWG se comporte de maniĂšre identique Ă WireGuard â il est entiĂšrement rĂ©trocompatible au niveau du protocole. Mais avec des paramĂštres actifs (ce qui est le paramĂštre par dĂ©faut), il devient ce que WireGuard ne peut pas ĂȘtre : un tunnel VPN rapide que les systĂšmes DPI ont du mal Ă identifier.
Alors, comment exactement AmneziaWG chiffre-t-il son trafic ? Examinons les quatre niveaux d’obfuscation qui rendent le DPI aveugle â et pourquoi ils ajoutent presque aucun coĂ»t de vitesse.
Comment AmneziaWG se cache des systĂšmes DPI (sans perte de vitesse)
AmneziaWG 2.0 utilise quatre niveaux d’obfuscation qui fonctionnent ensemble. Chacun cible une mĂ©thode diffĂ©rente utilisĂ©e par les systĂšmes DPI pour identifier le trafic VPN. Ensemble, ils rendent le trafic de chaque serveur unique.
En-tĂȘtes dynamiques (H1âH4)
WireGuard utilise des identifiants de type de message fixes de 32 bits :
- 1 â pour l’initiation
- 2 â pour la rĂ©ponse
- 3 â pour la rĂ©ponse avec cookie
- 4 â pour les donnĂ©es
Un appareil DPI analysant le trafic cherche simplement ces valeurs. AmneziaWG 2.0 remplace chaque valeur fixe par un nombre alĂ©atoire choisi dans une plage spĂ©cifiĂ©e. L’en-tĂȘte d’initiation (H1) peut ĂȘtre n’importe quelle valeur entre 234567 et 345678. L’en-tĂȘte de rĂ©ponse (H2) peut ĂȘtre entre 3456789 et 4567890. Ces plages ne se chevauchent jamais â le protocole doit toujours distinguer les types de paquets en interne â mais pour un observateur extĂ©rieur, il n’existe pas de valeur d’en-tĂȘte unique sur laquelle se fixer. Chaque paquet semble diffĂ©rent du prĂ©cĂ©dent.
Remplissage alĂ©atoire (S1âS4)
Le paquet d’initiation de WireGuard fait toujours exactement 148 octets. Sa rĂ©ponse fait toujours exactement 92 octets. Ces tailles fixes constituent une autre empreinte numĂ©rique. AmneziaWG ajoute un remplissage alĂ©atoire Ă chaque type de paquet : l’initiation devient 148+S1 octets, la rĂ©ponse devient 92+S2 octets, la rĂ©ponse avec cookie devient 64+S3 octets, et chaque paquet de donnĂ©es reçoit S4 octets de remplissage. S3 et S4 sont nouveaux dans la version 2.0 â et S4 est l’ajout le plus significatif, car il affecte chaque paquet de donnĂ©es, rendant l’analyse du trafic au niveau de la session beaucoup plus difficile.
Il existe une contrainte critique : S1+56 ne doit pas ĂȘtre Ă©gal Ă S2. Puisque la diffĂ©rence de taille originale entre l’initiation et la rĂ©ponse est de 56 octets (148â92), si les valeurs de remplissage compensent alĂ©atoirement exactement cette diffĂ©rence, deux paquets remplis se retrouveront de la mĂȘme taille â recrĂ©ant l’empreinte qu’AmneziaWG essaie d’Ă©liminer. Le gĂ©nĂ©rateur de paramĂštres du programme d’installation garantit automatiquement cette contrainte.
Signature de protocole personnalisĂ©e (I1âI5)
Avant que la poignĂ©e de main rĂ©elle ne commence, le client AmneziaWG envoie jusqu’Ă cinq paquets de substitution qui imitent d’autres protocoles â QUIC, DNS, SIP ou des motifs d’octets personnalisĂ©s. Le serveur ignore complĂštement ces paquets. Il attend simplement la vraie poignĂ©e de main.
- Configuration simple : Envoie 128 octets aléatoires <r 128>.
- Configuration complexe : Envoie des octets qui ressemblent Ă l’initiation d’une connexion QUIC (<b 0xc000000001><r 64><t>), avec un horodatage Unix.
Pour un systÚme DPI observant le début de la session, les premiers paquets ressemblent à du trafic web ordinaire.
Paquets de remplissage (Jc, Jmin, Jmax)
AprĂšs les paquets de substitution, le client envoie un nombre personnalisable de paquets de remplissage â du bruit pur avec des tailles alĂ©atoires entre Jmin et Jmax. Ces paquets brouillent le profil de synchronisation et de taille du dĂ©but de la session, rendant plus difficile pour les systĂšmes DPI d’identifier oĂč commence la vraie poignĂ©e de main.
Question de vitesse
Il y a un chiffre qui circule sur Internet : AmneziaWG a 65 % de surcharge. Ce chiffre est rĂ©el, mais il fait rĂ©fĂ©rence Ă l’implĂ©mentation Go en espace utilisateur â pas au module noyau. Le programme d’installation communautaire utilisĂ© dans ce guide construit un module noyau DKMS, et le module noyau ajoute moins de 12 % de surcharge globale â plus proche de 3 % dans les tests rĂ©els. Sur un rĂ©seau non censurĂ©, vous verriez environ 95 Mbps via WireGuard et 92 Mbps via AmneziaWG 2.0. Sur un rĂ©seau censurĂ©, la comparaison est 92 Mbps contre zĂ©ro.
Le tableau suivant rĂ©sume les paramĂštres que le programme d’installation gĂ©nĂšre automatiquement :
| ParamÚtre | Plage générée | Exemple de valeur |
|---|---|---|
| Jc (nombre de paquets de remplissage) | 4â8 | 6 |
| Jmin (taille min. de remplissage) | 40â89 | 55 |
| Jmax (taille max. de remplissage) | Jmin+100 Ă Jmin+500 | 380 |
| S1 (remplissage d’initiation) | 15â150 | 72 |
| S2 (remplissage de rĂ©ponse) | 15â150, S1+56â S2 | 56 |
| S3 (remplissage de cookie) | 8â55 | 32 |
| S4 (remplissage de donnĂ©es) | 4â27 | 16 |
| H1 (plage d’en-tĂȘte d’initiation) | uint32 sans chevauchement | 234567-345678 |
| H2 (plage d’en-tĂȘte de rĂ©ponse) | uint32 sans chevauchement | 3456789-4567890 |
| H3 (plage d’en-tĂȘte de cookie) | uint32 sans chevauchement | 56789012-67890123 |
| H4 (plage d’en-tĂȘte de donnĂ©es) | uint32 sans chevauchement | 456789012-567890123 |
| I1 (paquet CPS) | <r N> format | <r 128> |
Vous n’avez besoin de dĂ©finir aucun de ces paramĂštres manuellement. Le programme d’installation gĂ©nĂšre des valeurs alĂ©atoires cryptographiquement sĂ©curisĂ©es qui respectent les contraintes Ă chaque fois.
Maintenant que vous savez comment fonctionne l’obfuscation, voyons comment AmneziaWG se compare aux alternatives que vous pourriez envisager.
AmneziaWG vs Alternatives â Guide de prise de dĂ©cision rapide

| WireGuard | AmneziaWG 2.0 | OpenVPN+obfs4 | Shadowsocks | VLESS+Reality | |
|---|---|---|---|---|---|
| RĂ©sistance DPI | Faible | ĂlevĂ©e | Moyenne | Moyenne | TrĂšs Ă©levĂ©e |
| Surcharge de vitesse | ~4 % | <12 % (~3 % en conditions réelles) | ~25 % | ~8 % | ~10 % |
| Tunnel VPN complet | Oui | Oui | Oui | Non (proxy) | Non (proxy) |
| S’exĂ©cute dans le noyau | Oui | Oui (DKMS) | Non | Non | Non |
| ComplexitĂ© de configuration | Faible | Faible (avec installateur) | ĂlevĂ©e | Moyenne | ĂlevĂ©e |
| Transport | UDP | UDP | TCP/UDP | TCP | TCP |
Les rÚgles de prise de décision sont simples :
- Pas de DPI dans votre pays ? Utilisez WireGuard standard. C’est plus simple et dispose d’un Ă©cosystĂšme plus large.
- Besoin d’une protection DPI maximale et vous ne craignez pas les proxies ? VLESS+Reality est l’option la plus puissante pour l’obfuscation, mais ce n’est pas un tunnel complet.
- Vous voulez à la fois la vitesse et un tunnel complet avec obfuscation ? AmneziaWG 2.0 est la seule option qui offre les performances au niveau de WireGuard avec une véritable protection DPI dans un tunnel VPN complet.
- Vous utilisez déjà OpenVPN+obfs4 et cela fonctionne toujours ? Aucun besoin urgent de changer, mais AmneziaWG sera notablement plus rapide.
Cet article se concentre sur AmneziaWG car c’est le seul protocole qui vous offre un tunnel complet, des performances au niveau du noyau et une obfuscation intĂ©grĂ©e â le tout configurĂ© avec un seul script.
Si AmneziaWG est le bon choix pour votre situation, voici ce dont vous avez besoin avant de commencer le déploiement.
Ce dont vous avez besoin avant de commencer
Avant d’exĂ©cuter l’installateur, assurez-vous que votre environnement rĂ©pond Ă ces exigences :
| Exigence | Détails | Pourquoi |
|---|---|---|
| OS | Ubuntu 24.04 LTS (installation propre). Ubuntu 25.10 est expĂ©rimental. Debian 12/13 fonctionne mais peut nĂ©cessiter curl prĂ©-installĂ©. | L’installateur est testĂ© et entiĂšrement supportĂ© sur Ubuntu 24.04. |
| SpĂ©cifications VPS | 1 vCore, 1 GB RAM, 25 GB de stockage. Tout plan entre 3â5 $/mois convient. | L’installateur nĂ©cessite ~2 GB d’espace disque et ~1 GB de RAM lors de la compilation DKMS. Le VPN fonctionnel utilise des ressources minimales. |
| Virtualisation | KVM (pas OpenVZ, pas LXC). | AmneziaWG charge le module kernel via DKMS. LXC utilise un kernel hÎte partagé et ne peut pas charger de modules personnalisés. |
| AccĂšs SSH | Utilisateur root ou sudo avec authentification par mot de passe/clĂ©. | L’installateur doit s’exĂ©cuter en tant que root. |
| Port SSH | Port 22 par dĂ©faut ou prĂ©-ouvert dans UFW si vous utilisez un port non-standard. | Si SSH n’est pas en cours d’exĂ©cution sur le port 22 et que vous ne l’avez pas ouvert Ă l’avance, la configuration du pare-feu de l’installateur vous bloquera. |
| Application client | Amnezia VPN >= 4.8.12.7 (toutes les plateformes). | Les options AWG 2.0 ne sont pas comprises par les anciens clients. Le client WireGuard standard ne supporte pas AWG du tout. |
â ïž Avertissement : Les conteneurs LXC ne sont pas supportĂ©s. Si votre VPS utilise la virtualisation LXC, la compilation du module kernel DKMS Ă©chouera. Vous devez utiliser KVM ou bare-metal. VĂ©rifiez auprĂšs de votre fournisseur si vous n’ĂȘtes pas sĂ»r.
â ïž Avertissement : Si votre SSH s’exĂ©cute sur un port non-standard (autre que 22), vous devez l’ouvrir dans UFW avant d’exĂ©cuter l’installateur :
sudo ufw allow YOUR_PORT/tcp
Remplacez YOUR_PORT par votre port SSH rĂ©el. L’installateur inclut UFW avec une politique par dĂ©faut â si votre port SSH n’est pas autorisĂ©, vous serez immĂ©diatement bloquĂ©.
đĄ Conseil : Attendez 5â10 minutes aprĂšs la crĂ©ation de votre VPS avant d’exĂ©cuter l’installateur. Les processus cloud-init et d’initialisation en arriĂšre-plan peuvent entrer en conflit avec les appels apt-get que l’installateur effectue.
Avec votre VPS prĂȘt et les prĂ©requis confirmĂ©s, dĂ©ployons AmneziaWG 2.0 en utilisant le script d’installateur communautaire â la mĂ©thode la plus rapide et la plus transparente.
MĂ©thode 1 â DĂ©ployer avec le programme d’installation CLI (RecommandĂ©)
C’est la mĂ©thode d’installation principale. Vous tĂ©lĂ©chargerez un script d’installation avec version Ă©pinglĂ©e, l’exĂ©cuterez en tant que root, suivrez huit Ă©tapes automatisĂ©es (avec deux redĂ©marrages attendus), et vous vous retrouverez avec un serveur AmneziaWG 2.0 entiĂšrement configurĂ©. Le programme d’installation gĂšre tout : installation des paquets, compilation du module noyau, configuration du pare-feu, gĂ©nĂ©ration des paramĂštres et dĂ©marrage du service.
6.1 â Connectez-vous Ă votre VPS via SSH
Ouvrez votre terminal et connectez-vous Ă votre serveur :
ssh root@<SERVER_IP>
Remplacez <SERVER_IP> par l’adresse IP publique rĂ©elle de votre VPS. Si votre fournisseur vous a donnĂ© un utilisateur non-root, connectez-vous avec cet utilisateur, puis escaladez :
ssh <username>@<SERVER_IP>
sudo -i
Vous devriez voir la banniĂšre de bienvenue Ubuntu 24.04 suivie d’une invite root :
Welcome to Ubuntu 24.04 LTS (GNU/Linux 6.8.0-xx-generic x86_64)
...
root@vps:~#
6.2 â TĂ©lĂ©charger et exĂ©cuter le programme d’installation
TĂ©lĂ©chargez le script d’installation, rendez-le exĂ©cutable et exĂ©cutez-le :
wget https://raw.githubusercontent.com/bivlked/amneziawg-installer/v5.8.1/install_amneziawg_en.sh
chmod +x install_amneziawg_en.sh
sudo bash ./install_amneziawg_en.sh
L’URL est Ă©pinglĂ©e Ă la version v5.8.1 â la derniĂšre version en date d’avril 2026. C’est une sĂ©curitĂ© de la chaĂźne d’approvisionnement : cela garantit que le script tĂ©lĂ©chargĂ© correspond Ă la version testĂ©e, mĂȘme si le rĂ©fĂ©rentiel a Ă©tĂ© mis Ă jour depuis.
Le programme d’installation commence par vĂ©rifier votre systĂšme :
============================================
AmneziaWG 2.0 Installer v5.8.1
============================================
Checking system requirements...
OS: Ubuntu 24.04 LTS â OK
Virtualization: KVM â OK
RAM: 1024 MB â OK
Disk: 25 GB free â OK
Si une vĂ©rification Ă©choue, le programme d’installation s’arrĂȘte et vous indique pourquoi. Corrigez le problĂšme et rĂ©exĂ©cutez la commande.
6.3 â Parcourir les invites du programme d’installation
Le programme d’installation est une machine Ă Ă©tats Ă huit Ă©tapes avec support de reprise aprĂšs redĂ©marrage. Il enregistre sa progression dans /root/awg/awgsetup_cfg.init, donc si le serveur redĂ©marre, vous exĂ©cutez simplement la mĂȘme commande Ă nouveau et il reprend lĂ oĂč il s’Ă©tait arrĂȘtĂ©.
Ătape 0 : Initialisation â Le programme d’installation vĂ©rifie votre systĂšme d’exploitation, le type de virtualisation, la RAM et l’espace disque. Il crĂ©e le rĂ©pertoire de travail /root/awg/ et configure un fichier de verrouillage pour Ă©viter les exĂ©cutions parallĂšles.
Ătape 1 : Mise Ă jour du systĂšme et installation des paquets â Le programme d’installation exĂ©cute apt-get update && apt-get upgrade -y. Ensuite, il installe AmneziaWG, DKMS, les en-tĂȘtes Linux, UFW, Fail2Ban, les outils de gĂ©nĂ©ration de codes QR et d’autres dĂ©pendances.
đ Remarque : Le programme d’installation supprime Ă©galement plusieurs services d’arriĂšre-plan qui consomment des ressources sur les instances VPS minimales : snapd, modemmanager, networkd-dispatcher, unattended-upgrades, packagekit, lxd-agent-loader et udisks2. C’est intentionnel et sĂ»r pour les nĆuds VPN minimaux, mais peut casser les environnements Ă usage gĂ©nĂ©ral.
Lorsque l’Ă©tape 1 est terminĂ©e, le programme d’installation demande un redĂ©marrage :
Reboot required. Reboot now? [y/n]:
Tapez y et appuyez sur EntrĂ©e. Une fois que le serveur est revenu, connectez-vous Ă nouveau via SSH et rĂ©exĂ©cutez la mĂȘme commande :
sudo bash ./install_amneziawg_en.sh
Le script lit son Ă©tat enregistrĂ© et continue Ă l’Ă©tape 2 sans redemander d’invites.
Ătape 2 : Compilation du module noyau DKMS â Le programme d’installation compile le module noyau AmneziaWG par rapport Ă votre noyau actuel et l’enregistre auprĂšs de DKMS pour une reconstruction automatique lors des futures mises Ă jour du noyau :
Step 2: Building AmneziaWG kernel module via DKMS...
Creating symlink /var/lib/dkms/amneziawg/2.0/source -> /usr/src/amneziawg-2.0
DKMS: add completed.
Kernel preparation completed.
Building module:
make -C /lib/modules/6.8.0-xx-generic/build M=/var/lib/dkms/amneziawg/2.0/build modules
DKMS: build completed.
DKMS: install completed.
Un deuxiÚme redémarrage est demandé. Tapez y et appuyez sur Entrée.
đ Remarque : Deux redĂ©marrages lors de l’installation sont normaux et attendus. Le premier charge les nouveaux en-tĂȘtes du noyau, le second active le module noyau nouvellement construit. Le script enregistre l’Ă©tat entre les redĂ©marrages â rien n’est perdu.
AprĂšs le deuxiĂšme redĂ©marrage, connectez-vous Ă nouveau via SSH et exĂ©cutez le programme d’installation une fois de plus :
sudo bash ./install_amneziawg_en.sh
Ătape 3 : VĂ©rification du module aprĂšs redĂ©marrage â Le script vĂ©rifie que le module noyau est chargĂ© (lsmod | grep amneziawg). Si la compilation DKMS a Ă©chouĂ© pour une raison quelconque, elle bascule vers l’implĂ©mentation Go en espace utilisateur avec un avertissement concernant la surcharge plus Ă©levĂ©e.
Ătape 4 : Configuration du pare-feu â UFW est activĂ© avec une politique d’entrĂ©e par dĂ©faut-refuser. Le programme d’installation ajoute une rĂšgle de limitation de dĂ©bit SSH sur le port 22, ouvre votre port VPN pour le trafic UDP et configure les rĂšgles de routage pour l’interface awg0.
Ătape 5 : TĂ©lĂ©chargement des scripts de gestion â Les scripts de gestion des clients (manage_amneziawg.sh et awg_common.sh) sont tĂ©lĂ©chargĂ©s dans /root/awg/ avec des autorisations rĂ©servĂ©es au propriĂ©taire (700). Ceux-ci sont Ă©galement Ă©pinglĂ©s Ă la version v5.8.1.
Ătape 6 : Configuration interactive â Le programme d’installation pose maintenant quatre questions :
- Port UDP (par dĂ©faut : 39743, plage 1024â65535). La valeur par dĂ©faut est un port UDP alĂ©atoire Ă©levĂ© â conservez-la Ă moins que votre FAI soit connu pour bloquer les ports UDP Ă©levĂ©s.
- Sous-rĂ©seau de tunnel (par dĂ©faut : 10.9.9.1/24). C’est votre rĂ©seau VPN interne. Le serveur obtient .1, les clients obtiennent .2 Ă .254, supportant jusqu’Ă 253 clients.
- DĂ©sactiver IPv6 (par dĂ©faut : Y). RecommandĂ© â dĂ©sactiver IPv6 empĂȘche le trafic de fuir en dehors du tunnel sur les routes IPv6.
- Mode de routageChoisissez 1 pour tout le trafic, 2 pour Amnezia List + DNS (recommandĂ©), ou 3 pour les rĂ©seaux personnalisĂ©s. Le mode 2 achemine uniquement les plages d’adresses IP publiques bloquĂ©es et le DNS via le VPN, gardant votre accĂšs au rĂ©seau local rapide et direct.
đĄ Conseil : Le MTU est dĂ©fini Ă 1280 par dĂ©faut. C’est le MTU IPv6 minimum et c’est critique pour les rĂ©seaux mobiles et cellulaires. iOS est strict concernant Path MTU Discovery, et les rĂ©seaux cellulaires ont souvent un MTU effectif infĂ©rieur Ă la valeur par dĂ©faut de WireGuard de 1420. Laissez ceci Ă 1280.
Ătape 7 : DĂ©marrage du service â Le programme d’installation gĂ©nĂšre la configuration du serveur Ă /etc/amnezia/amneziawg/awg0.conf, crĂ©e deux configurations client par dĂ©faut (my_phone et my_laptop) Ă /root/awg/, gĂ©nĂšre des codes QR et dĂ©marre le service systemd awg-quick@awg0.
Ătape 8 : AchĂšvement â Vous verrez le message de succĂšs :

Le programme d’installation gĂ©nĂšre automatiquement tous les paramĂštres d’obfuscation AmneziaWG 2.0. Vous n’avez pas besoin de les toucher. Chaque serveur obtient un ensemble unique de valeurs â il n’y a pas d’empreinte digitale universelle pour que les systĂšmes DPI dĂ©tectent.
6.4 â Gestion des clients aprĂšs l’installation
Le script de gestion à /root/awg/manage_amneziawg.sh gÚre toutes les opérations du cycle de vie des clients. Voici les commandes essentielles :
Ajouter un nouveau client :
sudo bash /root/awg/manage_amneziawg.sh add my_desktop
Cela gĂ©nĂšre un fichier .conf, un code QR et un fichier .vpnuri pour le nouveau client. La configuration du serveur est rechargĂ©e Ă chaud â aucun redĂ©marrage du service n’est nĂ©cessaire.
Ajouter un client temporaire Ă expiration automatique :
sudo bash /root/awg/manage_amneziawg.sh add guest --expires=7d
Un travail cron vĂ©rifie toutes les cinq minutes et supprime automatiquement le client Ă son expiration. La configuration, les clĂ©s et l’entrĂ©e du serveur sont tous nettoyĂ©s.
Lister tous les clients :
sudo bash /root/awg/manage_amneziawg.sh list
Clients: my_phone (10.9.9.2/32) my_laptop (10.9.9.3/32) my_desktop (10.9.9.4/32) guest (10.9.9.5/32) [expires in 6d 23h]
Ajoutez l’indicateur -v pour des dĂ©tails supplĂ©mentaires incluant les clĂ©s publiques et les dates de crĂ©ation.
Supprimer un client :
sudo bash /root/awg/manage_amneziawg.sh remove guest
VĂ©rifier l’Ă©tat complet du serveur :
sudo bash /root/awg/manage_amneziawg.sh check
Cela affiche l’Ă©tat du service, le port ouvert, tous les paramĂštres AWG 2.0, l’Ă©tat du module noyau, l’Ă©tat d’UFW et l’Ă©tat de Fail2Ban en une seule vue.
Afficher les statistiques de trafic par client :
sudo bash /root/awg/manage_amneziawg.sh stats
Client Received Sent Latest handshake âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ my_phone 1.24 GiB 356.7 MiB 2 minutes ago my_laptop 892.3 MiB 128.4 MiB 15 seconds ago my_desktop 0 B 0 B (none)
Créer une sauvegarde :
sudo bash /root/awg/manage_amneziawg.sh backup
Cela crĂ©e une archive compressĂ©e Ă /root/awg/backups/ contenant votre configuration du serveur, les configurations des clients, les clĂ©s et les donnĂ©es d’expiration.
đ Remarque : Les commandes add et remove utilisent awg syncconf pour le rechargement Ă chaud. La configuration du serveur se met Ă jour instantanĂ©ment sans redĂ©marrer le service. Utilisez uniquement restart lors de la modification des paramĂštres cĂŽtĂ© serveur comme le port ou le MTU.
6.5 â VĂ©rifier que le serveur est en cours d’exĂ©cution
Parcourez ces vérifications pour confirmer que tout fonctionne :
Vérifier le service systemd :
sudo systemctl status awg-quick@awg0
â awg-quick@awg0.service - AmneziaWG Quick via awg-quick(8) for awg0
Loaded: loaded (/lib/systemd/system/awg-quick@.service; enabled)
Active: active (exited) since Thu 2026-04-09 14:32:01 UTCVĂ©rifier l’Ă©tat et les paramĂštres d’AmneziaWG :
sudo awg show awg0
Vérifier le pare-feu :
sudo ufw status verbose
Status: active Default: deny (incoming), allow (outgoing) 22/tcp LIMIT IN Anywhere 39743/udp ALLOW IN Anywhere
Vérifier Fail2Ban :
sudo fail2ban-client status sshd
Status for the jail: sshd |- Filter | |- Currently failed: 0 | `- Total failed: 0 `- Actions |- Currently banned: 0 `- Banned IP list:
Vérifier le module noyau DKMS :
dkms status
amneziawg/1.0.0, 6.8.0-110-generic, x86_64: installed
Si les cinq vĂ©rifications rĂ©ussissent, votre serveur AmneziaWG 2.0 est en cours d’exĂ©cution et prĂȘt Ă accepter les connexions.
Votre serveur est en cours d’exĂ©cution et vĂ©rifiĂ©. Si vous prĂ©fĂ©rez une approche basĂ©e sur l’interface graphique au lieu du terminal, voici la mĂ©thode alternative utilisant l’application AmneziaVPN.
MĂ©thode 2 â DĂ©ployer avec l’application AmneziaVPN (Alternative)
L’application de bureau AmneziaVPN peut installer automatiquement AmneziaWG sur votre serveur via SSH. Elle utilise le mĂȘme script d’installation que la mĂ©thode CLI, mais l’enveloppe dans une interface guidĂ©e. C’est idĂ©al si vous souhaitez une expĂ©rience d’installation sans intervention manuelle.
- Téléchargez AmneziaVPN depuis amnezia.org/en/downloads. Elle est disponible pour Windows, macOS, Linux, Android et iOS.
- Ouvrez l’application et cliquez sur le â (icĂŽne plus) ou Commencer.
- Sélectionnez « VPN auto-hébergé » parmi les options présentées.
- Entrez vos identifiants serveur :
- Adresse IP du serveur (et port si SSH n’est pas sur 22, par ex. 203.0.113.10:2221)
- Nom d’utilisateur SSH (par ex. root)
- Mot de passe ou clé privée SSH
- Choisissez le type d’installation :
- Automatique â installe uniquement AmneziaWG (recommandĂ©)
- Manuel â choisissez un protocole spĂ©cifique dans la liste
- Cliquez sur « Installer » â l’application se connecte Ă votre serveur via SSH et exĂ©cute l’installation automatiquement. Vous verrez un indicateur de progression.
- AprĂšs l’installation, l’application crĂ©e un profil de connexion VPN prĂȘt Ă l’emploi.
Notes post-installation :
- L’application installe AmneziaWG avec un port alĂ©atoire par dĂ©faut. Certains fournisseurs d’accĂšs Internet bloquent l’UDP sur les ports Ă©levĂ©s. L’application recommande de passer Ă un port infĂ©rieur Ă 9999 (comme 585 ou 1234). Pour le modifier : cliquez sur l’icĂŽne d’engrenage Ă cĂŽtĂ© de la connexion â onglet Gestion â modifiez le numĂ©ro de port.
- Si votre serveur dispose dĂ©jĂ d’un logiciel Amnezia installĂ©, cliquez sur « Ignorer la configuration » lors de la crĂ©ation de la connexion, puis utilisez « VĂ©rifier le serveur pour les services Amnezia prĂ©cĂ©demment installĂ©s » dans l’onglet Gestion.
Voici comment les deux méthodes se comparent :
| Aspect | Programme d’installation CLI | Application AmneziaVPN |
|---|---|---|
| ContrĂŽle | Complet â vous voyez chaque Ă©tape, pouvez personnaliser | LimitĂ© â l’application gĂšre tout |
| VisibilitĂ© | Transparente â toutes les commandes visibles | Opaque â s’exĂ©cute en arriĂšre-plan |
| Flexibilité | Routage personnalisé, point de terminaison, drapeaux | Utilise uniquement les paramÚtres par défaut |
| FacilitĂ© d’utilisation | NĂ©cessite une connaissance de SSH | Aucun travail en terminal |
| Gestion | Suite complĂšte manage_amneziawg.sh | Gestion basĂ©e sur l’application uniquement |
| Idéal pour | VPS non géré, dépannage | Configuration rapide, expérience guidée |
Que vous ayez utilisĂ© la CLI ou l’application, votre serveur est prĂȘt. Connectons maintenant votre premier appareil.
Connexion de votre premier client
AprĂšs l’installation, vous avez trois façons d’importer la configuration du client dans l’application Amnezia VPN. Choisissez celle qui correspond Ă votre appareil.
Méthode A : Code QR (Mobile)
L’installateur a gĂ©nĂ©rĂ© un code QR Ă /root/awg/my_phone.png. TĂ©lĂ©chargez-le sur votre ordinateur :
scp root@<SERVER_IP>:/root/awg/my_phone.png .
Ouvrez le fichier PNG sur votre Ă©cran. Sur votre tĂ©lĂ©phone, ouvrez l’application Amnezia VPN, appuyez sur « Ajouter VPN » â « Scanner le code QR », et pointez votre camĂ©ra vers le code QR affichĂ© sur votre Ă©cran. La connexion s’importe automatiquement.
Méthode B : URI vpn:// (Client Amnezia)
Affichez l’URI compressĂ©e sur votre serveur :
cat /root/awg/my_phone.vpnuri
Copiez l’intĂ©gralitĂ© de la chaĂźne vpn://… et envoyez-la Ă vous-mĂȘme â via Telegram, email ou une application de notes. Sur votre tĂ©lĂ©phone, ouvrez l’application Amnezia VPN, appuyez sur « Ajouter VPN » â « Coller depuis le presse-papiers ». La configuration s’importe en une seule Ă©tape.
L’URI est une version compressĂ©e en zlib et encodĂ©e en Base64 du fichier de configuration complet. Elle est compacte et conçue pour un partage rapide.
Méthode C : Fichier .conf (Bureau/Windows)
Téléchargez le fichier de configuration :
scp root@<SERVER_IP>:/root/awg/my_phone.conf .
Ouvrez le client AmneziaWG pour Windows ou l’application AmneziaVPN pour bureau, cliquez sur « Importer le(s) tunnel(s) Ă partir d’un fichier », et sĂ©lectionnez le fichier .conf.
Vérifier la connexion
Une fois connecté, vérifiez que le tunnel achemine votre trafic via le serveur :
curl ifconfig.me
Le rĂ©sultat doit afficher l’adresse IP publique de votre serveur, pas celle locale : 203.0.113.1
Pour plus de détails, y compris la localisation géographique du serveur :
curl -s https://ipinfo.io/json
{
"ip": "203.0.113.1",
"city": "Amsterdam",
"region": "North Holland",
"country": "NL",
...
}â ïž Avertissement : Le client WireGuard standard ne fonctionne pas avec les configurations AmneziaWG 2.0. Vous devez utiliser l’application Amnezia VPN (version 4.8.12.7 ou ultĂ©rieure) ou un client AmneziaWG natif (version 2.0.0 ou ultĂ©rieure sur Windows/Android/iOS).
â ïž Avertissement : Si vous voyez « Invalid key: s3 » sur Windows, votre client AmneziaWG pour Windows est obsolĂšte (version infĂ©rieure Ă 2.0.0). Mettez Ă jour vers la version 2.0.0+ ou basculez vers l’application Amnezia VPN.
đĄ Conseil : Si vous ĂȘtes connectĂ© mais n’avez pas d’internet, vĂ©rifiez que votre configuration client a MTU = 1280 dans la section [Interface]. C’est la cause la plus courante de « la poignĂ©e de main rĂ©ussit mais pas de trafic » sur les rĂ©seaux mobiles.
Félicitations ! Votre tunnel VPN fonctionne.
Ătapes suivantes â Extension de votre configuration
Vous disposez maintenant d’un tunnel VPN rĂ©sistant Ă l’inspection approfondie des paquets fonctionnant sur votre propre serveur, sous votre contrĂŽle, avec une vitesse Ă©quivalente Ă WireGuard. La mort silencieuse des paquets qui tuait votre connexion WireGuard n’est plus un problĂšme â votre trafic ressemble Ă quelque chose qu’un systĂšme DPI ne peut pas identifier de maniĂšre fiable.
Voici les choses les plus utiles que vous pouvez faire ensuite :
- Ajouter des clients pour votre famille ou votre Ă©quipe â utilisez le script de gestion pour gĂ©nĂ©rer des configurations pour chaque appareil qui a besoin d’accĂšs.
- Configurer le tunneling fractionnĂ© si vous n’avez pas besoin d’un routage en tunnel complet â cela maintient le trafic local rapide et rĂ©duit la bande passante sur votre VPS.
- Sauvegarder vos configurations â exĂ©cutez la commande de sauvegarde et stockez l’archive quelque part en sĂ©curitĂ©. Si votre serveur doit ĂȘtre reconstruit, c’est ce qui vous sauve de recommencer Ă zĂ©ro.
Configurer le tunneling fractionnĂ© si vous n’avez pas besoin que tout le trafic soit acheminĂ© via le VPN. C’est particuliĂšrement utile dans les pays avec une censure partielle â acheminez uniquement les sites bloquĂ©s via le tunnel et gardez le trafic local direct :
sudo bash /root/awg/manage_amneziawg.sh modify my_phone AllowedIPs "192.168.1.0/24,10.0.0.0/8"
Modifier le DNS de votre client si vous préférez des résolveurs différents :
sudo bash /root/awg/manage_amneziawg.sh modify my_phone DNS "8.8.8.8,1.0.0.1"
Ajuster PersistentKeepalive si vous ĂȘtes sur une configuration NAT agressive. La valeur par dĂ©faut de 33 secondes maintient la session UDP via NAT â la rĂ©duire Ă 25 peut aider sur les rĂ©seaux qui abandonnent rapidement les sessions UDP inactives :
sudo bash /root/awg/manage_amneziawg.sh modify my_phone PersistentKeepalive 25
Installer sur votre routeur pour une couverture de tout le réseau. AmneziaWG est pris en charge sur les routeurs Keenetic via AWG Manager et sur les routeurs ASUS exécutant Asuswrt-Merlin via AmneziaWG pour Merlin.
Sauvegarder votre configuration maintenant, avant que quoi que ce soit ne change :
sudo bash /root/awg/manage_amneziawg.sh backup
Si vous devez jamais migrer vers un nouveau serveur, exécutez une installation nouvelle, puis :
sudo bash /root/awg/manage_amneziawg.sh restore
sudo bash /root/awg/manage_amneziawg.sh regen
La commande restore restaure vos configurations et clés, et regen met à jour les configurations client avec la nouvelle adresse IP du serveur.
Pour une documentation plus approfondie, la documentation officielle d’Amnezia se trouve sur docs.amnezia.org et la communautĂ© est active sur Telegram.
Conclusion
AprĂšs avoir parcouru l’intĂ©gralitĂ© de la configuration, ce qui ressort d’AmneziaWG 2.0 n’est pas seulement que cela fonctionneâmais pourquoi cela fonctionne de maniĂšre fiable lĂ oĂč d’autres Ă©chouent. En prĂ©servant le noyau cryptographique Ă©prouvĂ© de WireGuard tout en changeant fondamentalement l’apparence du trafic sur le rĂ©seau, il contourne les faiblesses exactes que l’inspection approfondie des paquets exploite. Le rĂ©sultat est une configuration qui se sent aussi rapide et simple que WireGuard en pratique, mais bien plus rĂ©siliente dans les environnements hostiles. Une fois dĂ©ployĂ©e, la valeur devient Ă©vidente : vous n’exĂ©cutez pas seulement un VPNâvous en exĂ©cutez un qui est conçu pour survivre aux blocages du monde rĂ©el.
Si vous recherchez un VPS fiable pour hĂ©berger votre serveur AmneziaWG â ou si vous avez besoin de monter en charge avec des points de terminaison supplĂ©mentaires pour les membres de l’Ă©quipe â AvaHost fournit la virtualisation KVM avec accĂšs root complet, le stockage NVMe et le support Ubuntu 24.04 que cette configuration nĂ©cessite. Leur infrastructure est conçue spĂ©cifiquement pour les dĂ©ploiements auto-hĂ©bergĂ©s que ce guide couvre.