_Sidebar.md
... ...
@@ -28,7 +28,7 @@
28 28
* [VyOS](/howto/vyos1.4.x)
29 29
* [NixOS](/howto/nixos)
30 30
* [GeoFeed](/howto/GeoFeed)
31
- * [Telephony42 (Asterisk)](/howto/telephony42-Asterisk)
31
+ * [Telephony (Asterisk)](/howto/Telephony-Asterisk)
32 32
33 33
* Services
34 34
* [IRC](/services/IRC)
howto/Telephony-Asterisk.md
... ...
@@ -0,0 +1,240 @@
1
+# Getting Started with telephony (Asterisk)
2
+
3
+This guide will help you quickly deploy a working Asterisk PBX. By the end of this tutorial, you will be able to make and receive calls in telephony.
4
+
5
+## Prerequisites
6
+
7
+Before configuring Asterisk, ensure you have:
8
+
9
+1. An allocated telephony (`+042`) number prefix registered in the registry (e.g., `+04240000`).
10
+2. DNS NAPTR records correctly configured on your zone in `tel.dn42`.
11
+
12
+Example of wildcard NAPTR record to route any calls to your PBX at `pbx.yourdomain.dn42` with SIP port `5060`:
13
+
14
+```bind
15
+*.0.0.0.0.4.2.4.0.tel.dn42. IN NAPTR 100 10 "u" "E2U+sip" "!^(.*)$!sip:\\1@pbx.yourdomain.dn42:5060!" .
16
+```
17
+
18
+## Installation notes
19
+
20
+### Debian / Ubuntu
21
+
22
+Asterisk is available in the official repositories. (For Debian, you need to install packages from `sid` repository)
23
+
24
+```sh
25
+apt update
26
+apt install asterisk
27
+```
28
+
29
+### Alpine
30
+
31
+```sh
32
+apk add asterisk
33
+```
34
+
35
+### Docker (`docker compose`)
36
+
37
+```yaml
38
+services:
39
+ asterisk:
40
+ image: andrius/asterisk:stable
41
+ container_name: asterisk42
42
+ network_mode: host
43
+ volumes:
44
+ - ./config:/etc/asterisk
45
+ restart: unless-stopped
46
+```
47
+
48
+# Example configuration
49
+
50
+Asterisk relies on many configuration files. This guide will focus only on two main config files:
51
+- `pjsip.conf`: Network, Endpoints, and Authentication
52
+- `extensions.conf`: Dialplan and Routing
53
+
54
+When copying the configurations below, replace the following variables (remove the brackets):
55
+* `<OWN_IPv4>`: Your dn42 IPv4 address (e.g., `172.20.X.X`)
56
+* `<OWN_IPv6>`: Your dn42 IPv6 address (e.g., `fdXX::X`)
57
+* `<OWN_PREFIX>`: Your telephony prefix (e.g., `+04240000`)
58
+* `<EXT_NAME>`: Name for your extension (e.g., `0001` or `my-phone`)
59
+* `<FULL_NUMBER>`: The full `+042` number for your extension (e.g., `+042400000001`)
60
+* `<SECRET_PASS>`: A strong password
61
+
62
+## PJSIP (`pjsip.conf`)
63
+
64
+This file defines how Asterisk listens to the network, sets up templates for devices, creates your local extension, and prepares an anonymous endpoint to catch incoming ENUM calls.
65
+
66
+```ini
67
+[global]
68
+type=global
69
+; verified peers first
70
+endpoint_identifier_order=auth_username,username,ip
71
+
72
+; ==========================================
73
+; Transports
74
+; ==========================================
75
+
76
+[transport-udp4]
77
+type=transport
78
+protocol=udp
79
+bind=<OWN_IPv4>:5060
80
+local_net=172.20.0.0/14
81
+local_net=172.31.0.0/16
82
+local_net=10.0.0.0/8
83
+
84
+[transport-udp6]
85
+type=transport
86
+protocol=udp
87
+bind=[<OWN_IPv6>]:5060
88
+local_net=fd00::/8
89
+
90
+; ==========================================
91
+; Templates
92
+; ==========================================
93
+
94
+[phone-template](!)
95
+type=endpoint
96
+context=context-local ; Incoming calls from this phone go here
97
+allow=!all,ulaw,alaw ; Use standard audio formats
98
+rtp_symmetric=yes
99
+force_rport=yes
100
+rewrite_contact=yes
101
+direct_media=no ; Proxy media through PBX to prevent NAT issues
102
+trust_id_inbound=yes
103
+send_pai=yes
104
+
105
+; ==========================================
106
+; Local Extensions
107
+; ==========================================
108
+
109
+; Replace variables to create an extension names <EXT_NAME>
110
+[<EXT_NAME>](phone-template)
111
+auth=<EXT_NAME>
112
+aors=<EXT_NAME>
113
+callerid="My Name" <<FULL_NUMBER>>
114
+
115
+[<EXT_NAME>]
116
+type=auth
117
+auth_type=userpass
118
+username=<EXT_NAME>
119
+password=<SECRET_PASS>
120
+
121
+[<EXT_NAME>]
122
+type=aor
123
+max_contacts=3 ; Allow 3 devices to register simultaneously
124
+remove_existing=yes
125
+
126
+; ==========================================
127
+; Incoming calls via ENUM
128
+; ==========================================
129
+
130
+[peer-enum-inbound]
131
+type=endpoint
132
+context=context-enum ; Send unknown incoming calls to ENUM context
133
+allow=!all,ulaw,alaw ; Use standard audio formats
134
+rtp_symmetric=yes
135
+force_rport=yes
136
+rewrite_contact=yes
137
+direct_media=no
138
+
139
+[peer-enum-inbound-id]
140
+type=identify
141
+endpoint=peer-enum-inbound
142
+; match all dn42 subnets
143
+match=172.20.0.0/14
144
+match=172.31.0.0/16
145
+match=10.0.0.0/8
146
+match=fd00::/8
147
+
148
+; ==========================================
149
+; Outgoing calls via ENUM
150
+; ==========================================
151
+
152
+[peer-enum-outbound]
153
+type=endpoint
154
+allow=!all,ulaw,alaw ; Use standard audio formats
155
+send_pai=yes
156
+```
157
+
158
+## Dialplan (`extensions.conf`)
159
+
160
+The file tells Asterisk how to route numbers. It is divided into serveral contexts.
161
+
162
+```ini
163
+[globals]
164
+; (Optional) Global variables can go here
165
+
166
+; ==========================================
167
+; Inbound Routing
168
+; ==========================================
169
+
170
+; Calls originating from your own network.
171
+[context-local]
172
+
173
+; 4 digits -> call local extension
174
+exten => _XXXX,1,Goto(ext-local,${EXTEN},1)
175
+
176
+; starts with 042 -> add + and route out
177
+exten => _042X.,1,Goto(ext-routing,+${EXTEN},1)
178
+
179
+; standard +042 dialing -> route out
180
+exten => _+042X.,1,Goto(ext-routing,${EXTEN},1)
181
+
182
+; Catch-all -> add +042 and route out
183
+exten => _X!,1,Goto(ext-routing,+042${EXTEN},1)
184
+
185
+
186
+; Calls originating from external networks via ENUM.
187
+[context-enum]
188
+
189
+; starts with 00 -> replace with + and route out
190
+exten => _00X!,1,Goto(ext-routing,+${EXTEN:2},1)
191
+
192
+; starts with + -> route out
193
+exten => _+X!,1,Goto(ext-routing,${EXTEN},1)
194
+
195
+; Catch-all -> add + and route out
196
+exten => _X!,1,Goto(ext-routing,+${EXTEN},1)
197
+
198
+
199
+; ==========================================
200
+; Outbound & Local Routing
201
+; ==========================================
202
+
203
+; Calls destined for local networks.
204
+[ext-local]
205
+; route <OWN_PREFIX>0001 calls to your local extension <EXT_NAME>
206
+exten => 0001,1,Dial(PJSIP/<EXT_NAME>,30) ;
207
+
208
+
209
+; Inter-PBX routing for both inbound and outbound calls.
210
+[ext-routing]
211
+
212
+; route calls destined for your prefix
213
+exten => _<OWN_PREFIX>.,1,Goto(ext-local,${EXTEN:9},1)
214
+
215
+; other external calls -> do ENUM lookup on tel.dn42
216
+exten => _+042X.,1,Set(TARGET_URI=${ENUMLOOKUP(${EXTEN},sip,,,tel.dn42)})
217
+ ; if found, dial via our outbound endpoint
218
+ same => n,ExecIf($["${TARGET_URI}"!=""]?Dial(PJSIP/peer-enum-outbound/sip:${TARGET_URI},60))
219
+ ; if unallocated or failed, naturally hangup
220
+ same => n,Hangup()
221
+```
222
+
223
+Apply your configuration by entering the Asterisk CLI:
224
+
225
+```sh
226
+asterisk -rx 'core reload'
227
+```
228
+
229
+# Setting up your extension
230
+
231
+You can now connect a softphone (like MicroSIP, Zoiper, or Linphone) or a hardware IP Phone/ATA using the following details:
232
+
233
+* Domain / Server: pbx.yourdomain.dn42 / `<OWN_IPv4>` or `<OWN_IPv6>`
234
+* Port: 5060 (UDP)
235
+* Username: `<EXT_NAME>`
236
+* Password: `<SECRET_PASS>`
237
+
238
+Once connected, ask a friend in telephony42 to call your `<FULL_NUMBER>`.
239
+
240
+*Tip: Install and use `sngrep -c` in your PBX's terminal to visually monitor SIP traffic if calls fail.*
howto/telephony42-Asterisk.md
... ...
@@ -1,240 +0,0 @@
1
-# Getting Started with telephony (Asterisk)
2
-
3
-This guide will help you quickly deploy a working Asterisk PBX. By the end of this tutorial, you will be able to make and receive calls in telephony.
4
-
5
-## Prerequisites
6
-
7
-Before configuring Asterisk, ensure you have:
8
-
9
-1. An allocated telephony (`+042`) number prefix registered in the registry (e.g., `+04240000`).
10
-2. DNS NAPTR records correctly configured on your zone in `tel.dn42`.
11
-
12
-Example of wildcard NAPTR record to route any calls to your PBX at `pbx.yourdomain.dn42` with SIP port `5060`:
13
-
14
-```bind
15
-*.0.0.0.0.4.2.4.0.tel.dn42. IN NAPTR 100 10 "u" "E2U+sip" "!^(.*)$!sip:\\1@pbx.yourdomain.dn42:5060!" .
16
-```
17
-
18
-## Installation notes
19
-
20
-### Debian / Ubuntu
21
-
22
-Asterisk is available in the official repositories. (For Debian, you need to install packages from `sid` repository)
23
-
24
-```sh
25
-apt update
26
-apt install asterisk
27
-```
28
-
29
-### Alpine
30
-
31
-```sh
32
-apk add asterisk
33
-```
34
-
35
-### Docker (`docker compose`)
36
-
37
-```yaml
38
-services:
39
- asterisk:
40
- image: andrius/asterisk:stable
41
- container_name: asterisk42
42
- network_mode: host
43
- volumes:
44
- - ./config:/etc/asterisk
45
- restart: unless-stopped
46
-```
47
-
48
-# Example configuration
49
-
50
-Asterisk relies on many configuration files. This guide will focus only on two main config files:
51
-- `pjsip.conf`: Network, Endpoints, and Authentication
52
-- `extensions.conf`: Dialplan and Routing
53
-
54
-When copying the configurations below, replace the following variables (remove the brackets):
55
-* `<OWN_IPv4>`: Your dn42 IPv4 address (e.g., `172.20.X.X`)
56
-* `<OWN_IPv6>`: Your dn42 IPv6 address (e.g., `fdXX::X`)
57
-* `<OWN_PREFIX>`: Your telephony prefix (e.g., `+04240000`)
58
-* `<EXT_NAME>`: Name for your extension (e.g., `0001` or `my-phone`)
59
-* `<FULL_NUMBER>`: The full `+042` number for your extension (e.g., `+042400000001`)
60
-* `<SECRET_PASS>`: A strong password
61
-
62
-## PJSIP (`pjsip.conf`)
63
-
64
-This file defines how Asterisk listens to the network, sets up templates for devices, creates your local extension, and prepares an anonymous endpoint to catch incoming ENUM calls.
65
-
66
-```ini
67
-[global]
68
-type=global
69
-; verified peers first
70
-endpoint_identifier_order=auth_username,username,ip
71
-
72
-; ==========================================
73
-; Transports
74
-; ==========================================
75
-
76
-[transport-udp4]
77
-type=transport
78
-protocol=udp
79
-bind=<OWN_IPv4>:5060
80
-local_net=172.20.0.0/14
81
-local_net=172.31.0.0/16
82
-local_net=10.0.0.0/8
83
-
84
-[transport-udp6]
85
-type=transport
86
-protocol=udp
87
-bind=[<OWN_IPv6>]:5060
88
-local_net=fd00::/8
89
-
90
-; ==========================================
91
-; Templates
92
-; ==========================================
93
-
94
-[phone-template](!)
95
-type=endpoint
96
-context=context-local ; Incoming calls from this phone go here
97
-allow=!all,ulaw,alaw ; Use standard audio formats
98
-rtp_symmetric=yes
99
-force_rport=yes
100
-rewrite_contact=yes
101
-direct_media=no ; Proxy media through PBX to prevent NAT issues
102
-trust_id_inbound=yes
103
-send_pai=yes
104
-
105
-; ==========================================
106
-; Local Extensions
107
-; ==========================================
108
-
109
-; Replace variables to create an extension names <EXT_NAME>
110
-[<EXT_NAME>](phone-template)
111
-auth=<EXT_NAME>
112
-aors=<EXT_NAME>
113
-callerid="My Name" <<FULL_NUMBER>>
114
-
115
-[<EXT_NAME>]
116
-type=auth
117
-auth_type=userpass
118
-username=<EXT_NAME>
119
-password=<SECRET_PASS>
120
-
121
-[<EXT_NAME>]
122
-type=aor
123
-max_contacts=3 ; Allow 3 devices to register simultaneously
124
-remove_existing=yes
125
-
126
-; ==========================================
127
-; Incoming calls via ENUM
128
-; ==========================================
129
-
130
-[peer-enum-inbound]
131
-type=endpoint
132
-context=context-enum ; Send unknown incoming calls to ENUM context
133
-allow=!all,ulaw,alaw ; Use standard audio formats
134
-rtp_symmetric=yes
135
-force_rport=yes
136
-rewrite_contact=yes
137
-direct_media=no
138
-
139
-[peer-enum-inbound-id]
140
-type=identify
141
-endpoint=peer-enum-inbound
142
-; match all dn42 subnets
143
-match=172.20.0.0/14
144
-match=172.31.0.0/16
145
-match=10.0.0.0/8
146
-match=fd00::/8
147
-
148
-; ==========================================
149
-; Outgoing calls via ENUM
150
-; ==========================================
151
-
152
-[peer-enum-outbound]
153
-type=endpoint
154
-allow=!all,ulaw,alaw ; Use standard audio formats
155
-send_pai=yes
156
-```
157
-
158
-## Dialplan (`extensions.conf`)
159
-
160
-The file tells Asterisk how to route numbers. It is divided into serveral contexts.
161
-
162
-```ini
163
-[globals]
164
-; (Optional) Global variables can go here
165
-
166
-; ==========================================
167
-; Inbound Routing
168
-; ==========================================
169
-
170
-; Calls originating from your own network.
171
-[context-local]
172
-
173
-; 4 digits -> call local extension
174
-exten => _XXXX,1,Goto(ext-local,${EXTEN},1)
175
-
176
-; starts with 042 -> add + and route out
177
-exten => _042X.,1,Goto(ext-routing,+${EXTEN},1)
178
-
179
-; standard +042 dialing -> route out
180
-exten => _+042X.,1,Goto(ext-routing,${EXTEN},1)
181
-
182
-; Catch-all -> add +042 and route out
183
-exten => _X!,1,Goto(ext-routing,+042${EXTEN},1)
184
-
185
-
186
-; Calls originating from external networks via ENUM.
187
-[context-enum]
188
-
189
-; starts with 00 -> replace with + and route out
190
-exten => _00X!,1,Goto(ext-routing,+${EXTEN:2},1)
191
-
192
-; starts with + -> route out
193
-exten => _+X!,1,Goto(ext-routing,${EXTEN},1)
194
-
195
-; Catch-all -> add + and route out
196
-exten => _X!,1,Goto(ext-routing,+${EXTEN},1)
197
-
198
-
199
-; ==========================================
200
-; Outbound & Local Routing
201
-; ==========================================
202
-
203
-; Calls destined for local networks.
204
-[ext-local]
205
-; route <OWN_PREFIX>0001 calls to your local extension <EXT_NAME>
206
-exten => 0001,1,Dial(PJSIP/<EXT_NAME>,30) ;
207
-
208
-
209
-; Inter-PBX routing for both inbound and outbound calls.
210
-[ext-routing]
211
-
212
-; route calls destined for your prefix
213
-exten => _<OWN_PREFIX>.,1,Goto(ext-local,${EXTEN:9},1)
214
-
215
-; other external calls -> do ENUM lookup on tel.dn42
216
-exten => _+042X.,1,Set(TARGET_URI=${ENUMLOOKUP(${EXTEN},sip,,,tel.dn42)})
217
- ; if found, dial via our outbound endpoint
218
- same => n,ExecIf($["${TARGET_URI}"!=""]?Dial(PJSIP/peer-enum-outbound/sip:${TARGET_URI},60))
219
- ; if unallocated or failed, naturally hangup
220
- same => n,Hangup()
221
-```
222
-
223
-Apply your configuration by entering the Asterisk CLI:
224
-
225
-```sh
226
-asterisk -rx 'core reload'
227
-```
228
-
229
-# Setting up your extension
230
-
231
-You can now connect a softphone (like MicroSIP, Zoiper, or Linphone) or a hardware IP Phone/ATA using the following details:
232
-
233
-* Domain / Server: pbx.yourdomain.dn42 / `<OWN_IPv4>` or `<OWN_IPv6>`
234
-* Port: 5060 (UDP)
235
-* Username: `<EXT_NAME>`
236
-* Password: `<SECRET_PASS>`
237
-
238
-Once connected, ask a friend in telephony42 to call your `<FULL_NUMBER>`.
239
-
240
-*Tip: Install and use `sngrep -c` in your PBX's terminal to visually monitor SIP traffic if calls fail.*