Skip to content

Commit 323736c

Browse files
committed
docs: add info on local development and security clarifications
1 parent 3f541bb commit 323736c

2 files changed

Lines changed: 68 additions & 3 deletions

File tree

BUILDING.md

Lines changed: 60 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,74 @@
55
* Go (1.25)
66
* Git
77
* gomobile and Android Studio for Android ([see more](https://pkg.go.dev/golang.org/x/mobile/cmd/gomobile))
8-
* Flutter (3.38)
8+
* Flutter (3.38) for Web and Android
99

10-
## Build
10+
## Release build
1111

1212
The first step is to clone [awl](https://github.com/anywherelan/awl) and [awl-flutter](https://github.com/anywherelan/awl-flutter) in one parent directory.
1313

1414
```bash
15+
# Example structure:
16+
# /workspace
17+
# ├── awl
18+
# └── awl-flutter
19+
20+
git clone https://github.com/anywherelan/awl.git
21+
git clone https://github.com/anywherelan/awl-flutter.git
22+
1523
cd awl
1624
./build.sh release
1725
ls build
1826
```
1927

2028
See [build.sh](build.sh) for more details.
29+
30+
## Local Development
31+
32+
**Note:** To run the application on desktop (Linux/macOS/Windows), you need **root/administrator** rights. This is required to create virtual network interfaces.
33+
34+
### Web Static Files
35+
36+
The project requires a `static` directory containing the Flutter web UI. If you see an error like `pattern static: no matching files found`, you need to set this up. You have two options:
37+
38+
**Option A: Download pre-built (No Flutter required)**
39+
If you don't want to install Flutter or build the frontend, you can download the pre-built static files.
40+
1. Download the `awl-release-static.zip` artifact from a recent GitHub Action run from [Manual build release workflow](https://github.com/anywherelan/awl/actions/workflows/build-manual.yml).
41+
2. Unzip the contents into the `static` directory in the root of the awl project:
42+
```bash
43+
unzip awl-release-static.zip -d static
44+
```
45+
46+
**Option B: Build locally**
47+
If you have [Flutter installed](#dependencies), you can build the web static files yourself:
48+
```bash
49+
./build.sh web
50+
```
51+
This rebuilds the Flutter web frontend and places it in the `static` directory.
52+
53+
### For Windows
54+
55+
If you are developing on Windows, you must download the `wintun` driver dependencies before building:
56+
```bash
57+
./build.sh deps
58+
```
59+
60+
### For Android
61+
62+
The `./build.sh` script provides commands for Android development:
63+
64+
- **Build Android Library (Go backend)**:
65+
```bash
66+
./build.sh android-lib
67+
```
68+
Builds the Go backend as an Android library (`anywherelan.aar`). Use this when you are working on the Go code and want to check for compilation errors without building the full APK.
69+
70+
- **Build Full Android APK**:
71+
```bash
72+
./build.sh android
73+
```
74+
Builds the full Android application (requires `android-lib` step implicitly, but this command runs both).
75+
76+
77+
78+

README.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,13 @@ As a transport awl uses QUIC or TCP with TLS on top. Awl uses [DHT](https://en.w
5959

6060
At first, awl connects to community [bootstrap nodes](https://github.com/anywherelan/awl-bootstrap-node), register itself (send peer id (with public key) and public ip addresses) and later asks for addresses of peers you want to connect (all known peers). If peer does not have public addresses, peer could be reached out through bootstrap nodes.
6161

62+
## Security
63+
64+
For transport and security, awl fully relies on the [libp2p](https://docs.libp2p.io/) library.
65+
66+
- **Encryption**: Traffic between peers is encrypted using TLS 1.3 (or higher). This applies to both QUIC (which uses TLS natively) and TCP transports.
67+
- **Authentication**: `ed25519` keys are used for peer authentication. A `peer_id` is essentially a public key, ensuring secure identification of devices.
68+
6269
# Installation
6370

6471
For desktop there are two versions: `awl` and `awl-tray`. `awl` is mainly used for servers and other headless purposes and `awl-tray` is for desktop usage: it has nice system tray service (app indicator) to quickly get status of the vpn server, start/stop/restart it or to see which peers are online. Both versions have web-based ui for configuration and monitoring, and terminal interface [cli](#terminal-based-client).
@@ -165,7 +172,7 @@ To configure it on desktop with web UI go to admin page, select a peer, press Se
165172
How to configure using cli:
166173
```bash
167174
# list all your connected peers and their EXIT NODE status (if they or you allowed to use as a proxy)
168-
awl cli peers list
175+
awl cli peers status
169176

170177
# allow peer `peer-name` to use this device as a SOCKS5 proxy
171178
awl cli peers allow_exit_node --name="peer-name" --allow=true

0 commit comments

Comments
 (0)