Sign inSign up

ictinnovations/ictfax

By ictinnovations

Updated 16 days ago

Open source fax server. T.38 and G.711, fax to email, web dashboard. FreeSWITCH + ICTCore.

Image
API management
Web servers
Databases & storage
0

5.2K

ictinnovations/ictfax repository overview

ICTFax

Someone emails a PDF to [email protected] and it comes out of a fax machine in another country. That's the job ICTFax does, and it's the reason a 1980s protocol is still sitting in the middle of healthcare, legal and government workflows in 2026.

ICTFax is an open source fax server. It handles inbound and outbound faxing over T.38 and G.711 pass-through, bridges fax to email in both directions, and puts a web dashboard in front of the whole thing so nobody has to walk to a machine.

Built on FreeSWITCH for media and ICTCore for the communications logic, with an Angular front end. GPL-3.0.

ICTFax dashboard

Running it

docker run -d --name ictfax \
  -p 8080:80 \
  -p 5060:5060/tcp -p 5060:5060/udp \
  -p 16384-16484:16384-16484/udp \
  ictinnovations/ictfax:latest

Then open http://localhost:8080. First boot takes about two minutes while the database is created and the schema loads. After that you get the dashboard, and the REST API answers on /api/.

Publish the RTP range as shown. Skip it and your calls will connect with silence, which is the first thing everyone hits.

Settings you'll want
VariableDefaultWhat it does
DB_HOST127.0.0.1Point it at a real server and the bundled MariaDB never starts
DB_PASSgeneratedRequired once DB_HOST is external
ICTCORE_HOSTlocalhostThe hostname the API advertises
FS_ESL_PASSWORDClueConFreeSWITCH event socket password. Change it

Three volumes are worth mounting: /usr/ictcore/data for received faxes and uploaded documents, /usr/ictcore/log for application logs, and /var/lib/mysql if you're keeping the bundled database.

What it covers

Fax to email, email to fax, web to faxInbound and outbound
T.38Origination, termination
G.711 pass-throughOrigination, termination, gateway
ATA supportReal fax machines, sending and receiving
PSTN and SS7Through your provider

Plus the boring things that decide whether you can run it for real: DID management, extensions, contacts, document storage, multi-user accounts, and provider or trunk config.

Outbound jobs carry per-job status and a retry action on anything that failed:

Outbound fax list

Received documents can be viewed, downloaded or marked as read:

Inbound fax list

Try it without installing

There's a hosted demo at demo.ictfax.org.

Image status

This tag is rebuilt from the GitHub repository on every push, on Rocky Linux 8 with FreeSWITCH 1.10.12 and PHP 7.4. The build only publishes after a smoke test boots the container, confirms mod_spandsp loaded and checks the schema landed, so a tag that exists is a tag that started.

FreeSWITCH comes from Fedora Copr over HTTPS with GPG checking left on. SignalWire moved their own EL8 packages behind a paid token, and the mirror that used to fill that gap signs every package with a key it never publishes, so neither one can be verified.

It's still a single container with the database inside it. That's the right shape for evaluating and the wrong shape for production, so point DB_HOST at a real MariaDB before you put anything you care about through it.

Source, issues and the installation guide live on GitHub: ictinnovations/ictfax. Product site: ictfax.org.

Maintained by ICT Innovations, who've been shipping open source telephony since 2005.

Tag summary

Content type

Image

Digest

sha256:ae7af0d39

Size

706.7 MB

Last updated

16 days ago

docker pull ictinnovations/ictfax