Compare commits

..

10 Commits

Author SHA1 Message Date
B. Petersen
5d46335066 slightly smaller font size 2023-12-13 15:31:04 +01:00
B. Petersen
da5fcd835f add 'viewport' instructions 2023-12-13 15:30:48 +01:00
holger krekel
b055736439 rename benchmarks for blog post 2023-12-13 11:27:52 +01:00
missytake
2817ffd411 www: get actual account restrictions from chatmail.ini 2023-12-13 00:40:01 +01:00
B. Petersen
db45dc071b extract really needed styles from water.css; skip darkmode as this adds quite some burden to site owners and is easily overseen (eg. already our banners are not-so-nice in tdarkmode), if ppl want to use darkmode, they should actively adapt 2023-12-13 00:20:58 +01:00
link2xt
1c0543cb46 Update README.md
Co-authored-by: missytake <missytake@systemli.org>
2023-12-12 23:37:16 +01:00
link2xt
dde879c7fc Add scripts/cmdeploy 2023-12-12 23:37:16 +01:00
link2xt
cf95dfd49d Setup unbound DNS resolver 2023-12-12 21:52:05 +00:00
link2xt
4a96f19faf s/fuff/ruff/ 2023-12-12 20:29:34 +00:00
link2xt
a2a78c0aff Do not attmpt to activate venv from scripts/initenv.sh
If you run it as scripts/initenv.sh,
activating venv is useless as bash will exit immediately afterwards.

If you `source` it as suggested by README.md,
`set -e` will set the flag for the current shell
and your shell will exit as soon as some command returns non-zero status,
e.g. cmdeploy fails or you simply do `ls /foo/bar/baz` and `ls`
complains that `/foo/bar/baz` does not exist.
2023-12-12 20:22:34 +00:00
9 changed files with 80 additions and 1708 deletions

View File

@@ -25,54 +25,56 @@ DNS domain name (FQDN), for example `chat.example.org`.
ssh root@CHATMAIL_DOMAIN
```
2. Install the `cmdeploy` command in a virtualenv
2. Install the `cmdeploy` command in a virtualenv
```
source scripts/initenv.sh
git clone https://github.com/deltachat/chatmail
cd chatmail
scripts/initenv.sh
```
3. Create chatmail configuration file `chatmail.ini`:
```
cmdeploy init CHATMAIL_DOMAIN
scripts/cmdeploy init CHATMAIL_DOMAIN
```
4. Deploy to the remote chatmail server:
```
cmdeploy run
scripts/cmdeploy run
```
5. To output a DNS zone file from which you can transfer DNS records
to your DNS provider:
```
cmdeploy dns
scripts/cmdeploy dns
```
6. To check status of your remotely running chatmail service:
```
cmdeploy status
scripts/cmdeploy status
```
7. To test your chatmail service:
```
cmdeploy test
scripts/cmdeploy test
```
8. To benchmark your chatmail service:
```
cmdeploy bench
scripts/cmdeploy bench
```
### Refining the web pages
```
cmdeploy webdev
scripts/cmdeploy webdev
```
This starts a local live development cycle for chatmail Web pages:

View File

@@ -378,6 +378,20 @@ def deploy_chatmail(mail_domain: str, mail_server: str, dkim_selector: str) -> N
system=True,
)
# Run local DNS resolver `unbound`.
# `resolvconf` takes care of setting up /etc/resolv.conf
# to use 127.0.0.1 as the resolver.
apt.packages(
name="Install unbound",
packages="unbound",
)
systemd.service(
name="Start and enable unbound",
service="unbound.service",
running=True,
enabled=True,
)
# Deploy acmetool to have TLS certificates.
deploy_acmetool(nginx_hook=True, domains=[mail_server, f"mta-sts.{mail_server}"])

View File

@@ -163,7 +163,7 @@ def fmt_cmd_options(parser):
def fmt_cmd(args, out):
"""Run formattting fixes (fuff and black) on all chatmail source code."""
"""Run formattting fixes (ruff and black) on all chatmail source code."""
sources = [str(importlib.resources.files(x)) for x in ("chatmaild", "cmdeploy")]
black_args = [shutil.which("black")]

View File

@@ -39,22 +39,22 @@ class TestDC:
ac1, ac2 = cmfactory.get_online_accounts(2)
chat = cmfactory.get_accepted_chat(ac1, ac2)
def ping_pong():
def dc_ping_pong():
chat.send_text("ping")
msg = ac2.wait_next_incoming_message()
msg.chat.send_text("pong")
ac1.wait_next_incoming_message()
benchmark(ping_pong, 5)
benchmark(dc_ping_pong, 5)
def test_send_10_receive_10(self, benchmark, cmfactory, lp):
ac1, ac2 = cmfactory.get_online_accounts(2)
chat = cmfactory.get_accepted_chat(ac1, ac2)
def send_10_receive_10():
def dc_send_10_receive_10():
for i in range(10):
chat.send_text(f"hello {i}")
for i in range(10):
ac2.wait_next_incoming_message()
benchmark(send_10_receive_10, 5)
benchmark(dc_send_10_receive_10, 5)

6
scripts/cmdeploy Executable file
View File

@@ -0,0 +1,6 @@
#!/usr/bin/env bash
#
# Wrapper for cmdelpoy to run it in activated virtualenv.
set -e
. venv/bin/activate
cmdeploy "$@"

View File

@@ -4,6 +4,3 @@ python3 -m venv venv
venv/bin/pip install -e chatmaild
venv/bin/pip install -e cmdeploy
source venv/bin/activate
echo activated 'venv' python virtualenv environment containing "cmdeploy" tool

View File

@@ -1,4 +1,47 @@
body {
font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', 'Segoe UI Emoji', 'Apple Color Emoji', 'Noto Color Emoji', sans-serif;
line-height: 1.4;
font-size: 1.2em;
max-width: 800px;
margin: 20px auto;
padding: 0 10px;
color: #363636;
background: #fff;
}
h1 {
font-size: 2.2em;
margin-top: 0;
}
h1, h2, h3, h4, h5, h6 {
color: #000;
margin-bottom: 12px;
margin-top: 24px;
font-weight: 600;
}
a {
text-decoration: none;
color: #0076d1;
}
a:hover {
text-decoration: underline;
}
img, video {
max-width: 100%;
height: auto;
}
code {
background: #efefef;
padding: 2.5px 5px;
border-radius: 6px;
}
#menu {
display: flex;
flex-wrap: wrap;

View File

@@ -5,8 +5,8 @@
{% if config.webdev %}
<meta http-equiv="refresh" content="3">
{% endif %}
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
<title>{{ config.mail_domain }} {{ pagename }}</title>
<link rel="stylesheet" href="./water.css">
<link rel="stylesheet" href="./main.css">
<link rel="icon" href="/logo.svg">
<link rel=”mask-icon” href=”/logo.svg” color=”#000000">

File diff suppressed because it is too large Load Diff