with open("file.json", "w") as f:
json.dump({"name": name }, fp=f)channel_data = {}
...
d = channel_data.get(channel.id, None)
if not d:
# по этому каналу у нас пока нет записи в словаре, создаём новую
d = channel_data[channel.id] = {}
d["text"] = "Новый текст на замену старому"print (id(d))
print (id(channel_data[channel.id]))
Затем убираем роутинг по умолчанию через домашний роутер и поднимаем через VPN:
После этого весь трафик сервера будет идти в интернет через VPN. Можно с помощью tracepath убедиться.
Это, конечно, работает до перезагрузки или перезапуска VPN. Надо отдельно обеспечить, чтобы всё это поднималось автоматически. В некоторых VPN можно маршруты задавать прям в конфиге. Например, в openvpn есть ключ route конфига, который позволяет это сделать. Можно сделать отдельный скрипт, который всё настраивает, и как-то запускать его при поднятии VPN (например, в openvpn для этого тоже есть специальная инструкция).
После обустройства домашнего сервера перейдём к внешнему.
Там надо настроить SNAT/DNAT через iptables. На входе пакеты на нужные порты должны получать изменение IP получателя, чтобы они летели в VPN (DNAT - Destination NAT), а на выходе сервер должен подменять адрес отправителя на свой, чтобы пакеты летели от имени сервера (SNAT - Source NAT).
Также надо разрешить форвард пакетов (по умолчанию выключен): в файл /etc/sysctl.conf добавляем
net.ipv4.ip_forward=1
Затем вызываем sysctl -p, чтобы применить без перезагрузки.
Настройки iptables могут быть плохо совместимы с сторонними средствами управления iptables, в частности, с всякими firewalld/ufw, так что их надо будет отключить, ну или адаптировать под них приведённые примеры правил.