Sedan ett år tillbaka har jag driftat en egen telefonväxel och tänkte skriva ner lite tankar om det. Det är inte tänkt att vara en tutorial utan mer en genomgång av lite val jag gjort och varför man skulle vilja ha en egen telefonväxel.
Hur kom jag in på det här? Link to heading
Det finns en produkt från Google som heter Google Voice. Man får ett riktigt telefonnummer som man kan ringa från via en telefonapp eller webben, och en drös med andra smarta funktioner. Problemet med det för mig är att jag dels inte vill använda Googles tjänster, och dels att Google Voice bara är tillgängligt i USA.
Så då blev det dags att kolla hur man fixar något liknande själv.
Varför? Link to heading
Det är framförallt roligt och lärorikt för mig att drifta en egen telefonväxel, men det finns både underhållande och seriösa användningsområden.
I grunden har man ett eller flera riktiga telefonnummer som kan ringa eller ta emot samtal, och ett antal VoiP-klienter som pratar med servern. Sen kan allt det kopplas precis hur man vill.
Ett riktigt telefonnummer kan gå till:
- en telefonsvarare och alla meddelanden som lämnas skickas via epost till dig.
- ett menysystem: välj att lämna meddelande eller kopplas till personen. Eller ange en hemlig kod som anropar nåt API du satt upp.
- en oändlig kö med riktigt irriterande kömusik som man kan ge det till den där jobbiga försäljaren.
- en grupp med människor. Det kan ringa samtidigt hos alla, både på riktiga telefonnummer och i deras VoiP-klienter, och den första som svarar tar samtalet. Det kan också ske i turordning: först ringer det hos en person. Om inte den personen svarar går det vidare till nästa.
- Det är användbart i nödsituationer då man behöver få tag på någon snabbt i en grupp. Det kan också vara mer vardagliga saker, som att gruppen är alla i familjen och man ger numret till rörmokaren som ska dyka upp nån gång mellan 07:00 och 16:00.
- ett konferenssystem. Ring in på numret och ange eventuellt en kod och prata i grupp.
Flera av alternativen ger ett telefonnummer som är säkrare att ge ut till okända än att behöva ge ut sitt personliga telefonnummer. Jag har till exempel ett riktigt telefonnummer listat på den här hemsidan, vilket jag inte hade velat göra med mitt personliga telefonnummer.
Är man intresserad av integritet så kan den egna växeln också vara en lösning. Ringer man mellan VoiP-klienter på servern, det vill säga att samtalet aldrig når det riktiga telefonnätet, så har man full kontroll själv över all infrastruktur i samtalet och samtalen kan vara krypterade hela vägen.
Driver man någon form av verksamhet finns det givetvis ännu fler användningsområden.
Alternativen Link to heading
Det är fullt möjligt att sätta upp en fullt fungerande telefonväxel med bara Asterisk som är en öppen mjukvara. Då får man vara beredd att redigera konfigurationsfiler i oändlighet. Det blir något enklare med FreePBX som är ett komplett operativsystem baserat på Debian (från och med FreePBX 17). Jag valde att installera FreePBX på en VPS-server. FreePBX är gratis och öppen mjukvara, men drivs av ett företag. Deras företagsmodell går ut på att sälja support och premium-moduler till mjukvaran. Det är fullt användbart utan att lägga en krona på premium-moduler.
FreePBX använder i grunden också Asterisk, men ger bland annat ett web-gränssnitt där man kan göra nästan all konfiguration. En varning är att det fortfarande är väldigt mycket konfiguration att göra och man kommer få lära sig många nya begrepp och förkortningar.
Med FreePBX går det att sätta upp en kompetent VoiP-växel, där SIP/VoiP-klienter kan ansluta och ringa varandra. Jag använder till exempel appen Linphone både på desktop och på min android-mobil.
För att sedan komma ut på – eller ta emot samtal från – telefonnätet behöver man ett telefonnummer med en trunk. Trunken är förenklat själva uppkopplingen – via internet – som innehåller en eller flera telefonlinjer.
Jag undersökte så många tjänster som möjligt för det här och kom fram till att den bästa för mig var Twilio.
Några av fördelarna med Twilio:
- Ett telefonnummer klarar massvis med inkommande och utgående samtal samtidigt. Begränsningen är att bara ett nytt samtal i sekunden kan startas. Det går att modifiera den gränsen, men då blir kostnaden högre.
- Man betalar en låg avgift ($1.5) per månad och telefonnummer, och sen en låg minutkostnad för samtalen.
- Det går att stänga av automatisk debitering och bara pytsa in en pott med pengar på sitt konto. Det förhindrar att man på grund av någon felkonfiguration plötsligt får en räkning på några hundra tusen.
- Ett mycket kompetent WebAPI om man vill använda det.
För att få ett riktigt telefonnummer som man kan ringa från hos Twilio behöver man bevisa att man är en fysisk person som bor i det område där man vill ha ett telefonnummer (riktnummer 060 för mig t.ex). Det gör man på klassiskt amerikanskt maner genom att skicka in en elräkning eller liknande. Det tar några dagar att få det godkänt men när det är gjort är det bara att köra.
Säkerhet Link to heading
Något som märktes väldigt snabbt är att VoiP-servrar på internet är ett hett mål för attacker. Att komma över en oskyddad telefonväxel som det går att placera scam-samtal från är troligen väldigt attraktivt. Därför är det viktigt att låsa ner servern så mycket som möjligt och se till att någon lösning som t.ex Fail2Ban ser till att blockera IP-adresser som försöker bruteforcea sig in.
FreePBX har mycket av den här säkerheten inbyggt, men man får vara på tårna med att dubbelkolla konfiguration och att installera uppdateringar regelbundet.
Sammanfattning Link to heading
Det är inte en en-klicks-lösning jag beskriver, men det är fullt görbart för någon som är hyfsat van med att sätta upp servrar att sätta upp en egen telefonväxel. När allt väl är uppsatt fungerar det bra och den dagliga driften är inte mycket mer än att installera lite uppdateringar då och då.
Det har varit kul och lärorikt att göra och det finns faktiskt några seriösa användningsområden även för en privatperson. Kostnaden har dessutom varit minimal då telefonnumren kostar lite och jag redan hade tillgång till en server att installera allt på.