+
diff --git a/docs/.vitepress/theme/i18n.ts b/docs/.vitepress/theme/i18n.ts
new file mode 100644
index 0000000..592ae92
--- /dev/null
+++ b/docs/.vitepress/theme/i18n.ts
@@ -0,0 +1,164 @@
+// Shared between LanguageBanner.vue (first-visit toast) and
+// LanguageSwitcher.vue (nav dropdown). When a new page is
+// translated in both English and one of the locales, add an entry
+// here so both UIs take the user to the matching page.
+
+export const LOCALE_PREFIXES = ['/es', '/pt-BR']
+
+export const messages = {
+ en: { label: 'English', short: 'EN', home: '/', hint: '', action: '', dismiss: 'Dismiss', changeLanguage: 'Change language' },
+ es: { label: 'Español', short: 'ES', home: '/es/', hint: 'Esta página también está disponible en Español.', action: 'Cambiar', dismiss: 'Cerrar', changeLanguage: 'Cambiar idioma' },
+ 'pt-BR': { label: 'Português (BR)', short: 'PT', home: '/pt-BR/', hint: 'Esta página também está disponível em Português (BR).', action: 'Trocar', dismiss: 'Fechar', changeLanguage: 'Mudar idioma' }
+}
+
+export const translatedPaths = {
+ es: {
+ '/': '/es/',
+ '/what-is-libremesh': '/es/what-is-libremesh.html',
+ '/getting-started': '/es/getting-started.html',
+ '/features': '/es/features.html',
+ '/guide/connecting': '/es/guide/connecting.html',
+ '/guide/packages-selection': '/es/guide/packages-selection.html',
+ '/guide/network-profiles': '/es/guide/network-profiles.html',
+ '/guide/upgrade': '/es/guide/upgrade.html',
+ '/build/': '/es/build/',
+ '/build/index': '/es/build/index.html',
+ '/build/imagebuilder': '/es/build/imagebuilder.html',
+ '/build/buildroot': '/es/build/buildroot.html',
+ '/reference/configuration': '/es/reference/configuration.html',
+ '/reference/flavors': '/es/reference/flavors.html',
+ '/reference/lime-config': '/es/reference/lime-config.html',
+ '/reference/system': '/es/reference/system.html',
+ '/reference/network/': '/es/reference/network/',
+ '/reference/network/index': '/es/reference/network/index.html',
+ '/reference/network/protocols/babeld': '/es/reference/network/protocols/babeld.html',
+ '/reference/network/protocols/batman-adv': '/es/reference/network/protocols/batman-adv.html',
+ '/reference/network/protocols-list': '/es/reference/network/protocols-list.html',
+ '/reference/network/protocols-options': '/es/reference/network/protocols-options.html',
+ '/reference/network/interface-specific': '/es/reference/network/interface-specific.html',
+ '/reference/wifi/': '/es/reference/wifi/',
+ '/reference/wifi/index': '/es/reference/wifi/index.html',
+ '/reference/wifi/band-specific': '/es/reference/wifi/band-specific.html',
+ '/reference/wifi/modes': '/es/reference/wifi/modes.html',
+ '/reference/wifi/interface-specific': '/es/reference/wifi/interface-specific.html',
+ '/reference/generic_config': '/es/reference/generic_config.html',
+ '/reference/hardware_detection/ground_routing': '/es/reference/hardware_detection/ground_routing.html',
+ '/reference/hardware_detection/watchcat': '/es/reference/hardware_detection/watchcat.html',
+ '/development/contributing': '/es/development/contributing.html',
+ '/development/testing': '/es/development/testing.html',
+ '/development/virtualizing': '/es/development/virtualizing.html',
+ '/development/hacking': '/es/development/hacking.html',
+ '/development/hacking/kernel_vermagic': '/es/development/hacking/kernel_vermagic.html',
+ '/resources/media_list': '/es/resources/media_list.html',
+ '/resources/related_projects': '/es/resources/related_projects.html',
+ '/resources/tools/monitoring': '/es/resources/tools/monitoring.html',
+ '/diagrams/libremesh-interfaces-openwrt-one': '/es/diagrams/libremesh-interfaces-openwrt-one.html',
+ },
+ 'pt-BR': {
+ '/': '/pt-BR/',
+ '/what-is-libremesh': '/pt-BR/what-is-libremesh.html',
+ '/getting-started': '/pt-BR/getting-started.html',
+ '/features': '/pt-BR/features.html',
+ '/guide/connecting': '/pt-BR/guide/connecting.html',
+ '/guide/packages-selection': '/pt-BR/guide/packages-selection.html',
+ '/guide/network-profiles': '/pt-BR/guide/network-profiles.html',
+ '/guide/upgrade': '/pt-BR/guide/upgrade.html',
+ '/build/': '/pt-BR/build/',
+ '/build/index': '/pt-BR/build/index.html',
+ '/build/imagebuilder': '/pt-BR/build/imagebuilder.html',
+ '/build/buildroot': '/pt-BR/build/buildroot.html',
+ '/reference/configuration': '/pt-BR/reference/configuration.html',
+ '/reference/flavors': '/pt-BR/reference/flavors.html',
+ '/reference/lime-config': '/pt-BR/reference/lime-config.html',
+ '/reference/system': '/pt-BR/reference/system.html',
+ '/reference/network/': '/pt-BR/reference/network/',
+ '/reference/network/index': '/pt-BR/reference/network/index.html',
+ '/reference/network/protocols/babeld': '/pt-BR/reference/network/protocols/babeld.html',
+ '/reference/network/protocols/batman-adv': '/pt-BR/reference/network/protocols/batman-adv.html',
+ '/reference/network/protocols-list': '/pt-BR/reference/network/protocols-list.html',
+ '/reference/network/protocols-options': '/pt-BR/reference/network/protocols-options.html',
+ '/reference/network/interface-specific': '/pt-BR/reference/network/interface-specific.html',
+ '/reference/wifi/': '/pt-BR/reference/wifi/',
+ '/reference/wifi/index': '/pt-BR/reference/wifi/index.html',
+ '/reference/wifi/band-specific': '/pt-BR/reference/wifi/band-specific.html',
+ '/reference/wifi/modes': '/pt-BR/reference/wifi/modes.html',
+ '/reference/wifi/interface-specific': '/pt-BR/reference/wifi/interface-specific.html',
+ '/reference/generic_config': '/pt-BR/reference/generic_config.html',
+ '/reference/hardware_detection/ground_routing': '/pt-BR/reference/hardware_detection/ground_routing.html',
+ '/reference/hardware_detection/watchcat': '/pt-BR/reference/hardware_detection/watchcat.html',
+ '/development/contributing': '/pt-BR/development/contributing.html',
+ '/development/testing': '/pt-BR/development/testing.html',
+ '/development/virtualizing': '/pt-BR/development/virtualizing.html',
+ '/development/hacking': '/pt-BR/development/hacking.html',
+ '/development/hacking/kernel_vermagic': '/pt-BR/development/hacking/kernel_vermagic.html',
+ '/resources/media_list': '/pt-BR/resources/media_list.html',
+ '/resources/related_projects': '/pt-BR/resources/related_projects.html',
+ '/resources/tools/monitoring': '/pt-BR/resources/tools/monitoring.html',
+ '/diagrams/libremesh-interfaces-openwrt-one': '/pt-BR/diagrams/libremesh-interfaces-openwrt-one.html',
+ }
+}
+
+export function stripLocale(path) {
+ for (const p of LOCALE_PREFIXES) {
+ if (path === p || path === p + '/' || path.startsWith(p + '/')) {
+ return path.slice(p.length) || '/'
+ }
+ }
+ return path
+}
+
+// Strip a VitePress base prefix (e.g. "/libremesh.github.io") so the
+// remaining path is suitable for the locale helpers above, which all
+// expect a root-relative path. With base '/' this is a no-op.
+export function stripBase(path, base) {
+ if (!base || base === '/') return path
+ const b = base.replace(/\/$/, '')
+ if (path === b) return '/'
+ if (path.startsWith(b + '/')) return path.slice(b.length) || '/'
+ return path
+}
+
+export function cleanPath(path) {
+ return path.replace(/\.html$/, '').replace(/\/$/, '') || '/'
+}
+
+// Returns a target path in the requested locale. The returned path
+// does NOT include the VitePress base — callers must prepend it
+// (e.g. via import.meta.env.BASE_URL or the useData() siteData.base)
+// before assigning to window.location.href. The LanguageBanner and
+// LanguageSwitcher components handle that.
+export function targetFor(locale, currentPath) {
+ const clean = cleanPath(stripLocale(currentPath))
+ if (locale === 'en') return clean
+ return translatedPaths[locale][clean] || messages[locale].home
+}
+
+// True when the current path has a direct translated counterpart
+// in the requested locale (i.e. the user can land on the same page
+// in the other language). False when the only available target is
+// the locale home (the user would be sent there as a fallback).
+export function hasTranslation(locale, currentPath) {
+ if (locale === 'en') return true
+ const clean = cleanPath(stripLocale(currentPath))
+ return Object.prototype.hasOwnProperty.call(translatedPaths[locale], clean)
+}
+
+export function currentLocaleOf(path) {
+ // Check for exact locale prefix: /es, /es/, or /es/...
+ // Avoid false matches like /esoteric or /escape
+ if (path === '/es' || path === '/es/' || path.startsWith('/es/')) return 'es'
+ if (path === '/pt-BR' || path === '/pt-BR/' || path.startsWith('/pt-BR/')) return 'pt-BR'
+ return 'en'
+}
+
+export function pickLocale(navLangs) {
+ if (!navLangs) return null
+ const list = Array.isArray(navLangs) ? navLangs : [navLangs]
+ for (const lang of list) {
+ if (!lang) continue
+ const lower = String(lang).toLowerCase()
+ if (lower.startsWith('pt')) return 'pt-BR'
+ if (lower.startsWith('es')) return 'es'
+ }
+ return null
+}
diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts
index 210fda4..8186c68 100644
--- a/docs/.vitepress/theme/index.ts
+++ b/docs/.vitepress/theme/index.ts
@@ -5,13 +5,19 @@ import DefaultTheme from 'vitepress/theme'
import './style.css'
import { redirects } from './redirects'
import LayoutWide from './LayoutWide.vue'
+import LanguageBanner from './LanguageBanner.vue'
+import LanguageSwitcher from './LanguageSwitcher.vue'
+import LanguageSwitcherMobile from './LanguageSwitcherMobile.vue'
export default {
extends: DefaultTheme,
Layout: () => {
return h(DefaultTheme.Layout, null, {
// https://vitepress.dev/guide/extending-default-theme#layout-slots
- 'wide': () => h(LayoutWide)
+ 'wide': () => h(LayoutWide),
+ 'page-bottom': () => h(LanguageBanner),
+ 'nav-bar-content-after': () => h(LanguageSwitcher),
+ 'nav-screen-content-after': () => h(LanguageSwitcherMobile)
})
},
enhanceApp({ app, router, siteData }) {
diff --git a/docs/.vitepress/theme/style.css b/docs/.vitepress/theme/style.css
index cd7f2a0..012db62 100644
--- a/docs/.vitepress/theme/style.css
+++ b/docs/.vitepress/theme/style.css
@@ -139,3 +139,329 @@
);
}
+/**
+ * Component: Custom language switcher in the nav.
+ * We replace VitePress's built-in VPNavBarTranslations because the
+ * built-in one auto-generates links to // for
+ * every locale, which 404s for pages that don't have a translated
+ * counterpart. This custom version only links to paths that exist,
+ * falling back to the locale home otherwise.
+ * -------------------------------------------------------------------------- */
+
+/* Hide VitePress's built-in language switchers.
+ * The MutationObserver in LanguageSwitcher.vue sets a data-lang-hidden
+ * attribute on these elements whenever they appear in the DOM (initial
+ * render, SPA navigation, HMR, etc.). This CSS rule picks up that
+ * attribute to hide them. Our own switcher (mounted via the
+ * nav-bar-content-after and nav-screen-content-after slots) replaces
+ * them with links that only point at pages that actually exist. */
+[data-lang-hidden] { display: none !important; }
+
+/**
+ * Component: Custom language switcher in the desktop nav.
+ * Styled to match VitePress's built-in VPNavBarTranslations: globe
+ * icon + chevron, transparent button, hover/aria-expanded driven
+ * dropdown, themed panel. Flexbox `order` places it to the right of
+ * the theme (appearance) switcher, separated by a `|` divider drawn
+ * with a ::before pseudo-element.
+ * -------------------------------------------------------------------------- */
+
+.lang-switcher {
+ position: relative;
+ display: flex;
+ align-items: center;
+ order: 1;
+}
+
+.VPNavBarAppearance { order: 0; }
+.VPNavBarSocialLinks { order: 2; }
+.VPNavBarExtra { order: 3; }
+
+.lang-switcher::before {
+ content: "";
+ width: 1px;
+ height: 24px;
+ background: var(--vp-c-divider);
+ margin: 0 8px;
+}
+
+.lang-switcher:hover,
+.lang-switcher.active {
+ color: var(--vp-c-brand-1);
+ transition: color 0.25s;
+}
+
+.lang-switcher .button {
+ display: flex;
+ align-items: center;
+ padding: 0 12px;
+ height: var(--vp-nav-height);
+ color: var(--vp-c-text-1);
+ background: transparent;
+ border: 0;
+ cursor: pointer;
+ font: inherit;
+ transition: color 0.5s;
+}
+
+.lang-switcher .text {
+ display: flex;
+ align-items: center;
+ line-height: var(--vp-nav-height);
+ font-size: 14px;
+ font-weight: 500;
+ color: var(--vp-c-text-1);
+ transition: color 0.25s;
+}
+
+.lang-switcher:hover .text { color: var(--vp-c-text-2); }
+.lang-switcher.active .text { color: var(--vp-c-brand-1); }
+.lang-switcher.active:hover .text { color: var(--vp-c-brand-2); }
+
+.lang-switcher .option-icon {
+ font-size: 16px;
+ background-color: currentColor;
+ -webkit-mask-image: var(--icon);
+ mask-image: var(--icon);
+ -webkit-mask-repeat: no-repeat;
+ mask-repeat: no-repeat;
+ -webkit-mask-size: contain;
+ mask-size: contain;
+ width: 20px;
+ height: 20px;
+ display: inline-block;
+ vertical-align: middle;
+}
+
+.lang-switcher .text-icon {
+ margin-left: 4px;
+ font-size: 14px;
+}
+
+.lang-switcher .menu {
+ position: absolute;
+ top: calc(var(--vp-nav-height) / 2 + 20px);
+ right: 0;
+ opacity: 0;
+ visibility: hidden;
+ transform: translateY(0);
+ transition: opacity 0.25s, visibility 0.25s, transform 0.25s;
+}
+
+.lang-switcher:hover .menu,
+.lang-switcher.active .menu {
+ opacity: 1;
+ visibility: visible;
+ transform: translateY(0);
+}
+
+.lang-switcher .VPMenu {
+ border-radius: 12px;
+ padding: 12px;
+ min-width: 128px;
+ border: 1px solid var(--vp-c-divider);
+ background-color: var(--vp-c-bg-elv);
+ box-shadow: var(--vp-shadow-3);
+}
+
+.lang-switcher .items {
+ display: flex;
+ flex-direction: column;
+ gap: 0;
+}
+
+.lang-switcher .link {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 12px;
+ border: 0;
+ background: transparent;
+ border-radius: 6px;
+ padding: 0 12px;
+ line-height: 32px;
+ font-size: 14px;
+ font-weight: 500;
+ color: var(--vp-c-text-1);
+ text-align: left;
+ white-space: nowrap;
+ font-family: inherit;
+ cursor: pointer;
+ transition: background-color 0.25s, color 0.25s;
+}
+
+.lang-switcher .link:hover {
+ color: var(--vp-c-brand-1);
+ background-color: var(--vp-c-default-soft);
+}
+
+.lang-switcher .link.active {
+ color: var(--vp-c-brand-1);
+}
+
+.lang-switcher .link-hint {
+ font-size: 11px;
+ color: var(--vp-c-text-3);
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+}
+
+/**
+ * Component: Language switcher in the mobile full-screen menu.
+ * Mirrors VitePress's built-in VPNavScreenTranslations layout: a
+ * collapsible header with the globe icon and current locale label,
+ * expanding to a list of locale buttons. Click anywhere outside
+ * doesn't matter here since the screen is modal.
+ * -------------------------------------------------------------------------- */
+
+.lang-switcher-mobile {
+ padding: 12px 0;
+ border-top: 1px solid var(--vp-c-divider);
+}
+
+.lang-switcher-mobile .title {
+ display: flex;
+ align-items: center;
+ font-size: 14px;
+ font-weight: 500;
+ color: var(--vp-c-text-1);
+ background: transparent;
+ border: 0;
+ padding: 0;
+ cursor: pointer;
+ font-family: inherit;
+ width: 100%;
+ text-align: left;
+}
+
+.lang-switcher-mobile .icon {
+ font-size: 16px;
+}
+
+.lang-switcher-mobile .icon.lang {
+ margin-right: 8px;
+}
+
+.lang-switcher-mobile .icon.chevron {
+ margin-left: auto;
+ transition: transform 0.25s;
+}
+
+.lang-switcher-mobile.open .icon.chevron {
+ transform: rotate(180deg);
+}
+
+.lang-switcher-mobile .list {
+ list-style: none;
+ padding: 0;
+ margin: 8px 0 0 0;
+ display: flex;
+ flex-direction: column;
+ gap: 2px;
+}
+
+.lang-switcher-mobile .link {
+ display: flex;
+ align-items: center;
+ justify-content: space-between;
+ gap: 12px;
+ width: 100%;
+ background: transparent;
+ border: 0;
+ padding: 6px 0 6px 24px;
+ font: inherit;
+ font-size: 14px;
+ color: var(--vp-c-text-1);
+ text-align: left;
+ cursor: pointer;
+ border-radius: 6px;
+ transition: color 0.25s, background-color 0.25s;
+}
+
+.lang-switcher-mobile .link:hover {
+ color: var(--vp-c-brand-1);
+ background-color: var(--vp-c-default-soft);
+}
+
+.lang-switcher-mobile .link.active {
+ color: var(--vp-c-brand-1);
+ font-weight: 600;
+}
+
+.lang-switcher-mobile .link-hint {
+ font-size: 11px;
+ color: var(--vp-c-text-3);
+ text-transform: uppercase;
+ letter-spacing: 0.05em;
+}
+
+/**
+ * Component: Language suggestion toast
+ * Floating chip in the bottom-right corner. Out of the nav so it
+ * never overlaps the menu and never shifts layout on mobile.
+ * -------------------------------------------------------------------------- */
+
+.lang-toast {
+ position: fixed;
+ right: 1rem;
+ bottom: 1rem;
+ z-index: 200;
+ display: inline-flex;
+ align-items: center;
+ gap: 0.5rem;
+ padding: 0.5rem 0.75rem;
+ background: var(--vp-c-bg);
+ color: var(--vp-c-text-1);
+ border: 1px solid var(--vp-c-divider);
+ border-radius: 8px;
+ box-shadow: 0 6px 18px rgba(0, 0, 0, 0.18);
+ font-size: 0.85rem;
+ max-width: calc(100vw - 2rem);
+}
+
+.lang-toast__msg {
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.lang-toast__msg strong {
+ font-weight: 600;
+}
+
+.lang-toast__btn {
+ appearance: none;
+ border: 1px solid var(--vp-c-divider);
+ background: var(--vp-c-bg);
+ color: var(--vp-c-text-1);
+ padding: 0.15rem 0.55rem;
+ font-size: 0.8rem;
+ border-radius: 6px;
+ cursor: pointer;
+ font-family: inherit;
+ line-height: 1.4;
+}
+
+.lang-toast__btn:hover {
+ border-color: var(--vp-c-brand-1);
+}
+
+.lang-toast__btn--primary {
+ background: var(--vp-c-brand-3);
+ color: var(--vp-c-white);
+ border-color: var(--vp-c-brand-3);
+}
+
+.lang-toast__btn--primary:hover {
+ background: var(--vp-c-brand-2);
+ border-color: var(--vp-c-brand-2);
+}
+
+@media (max-width: 480px) {
+ .lang-toast {
+ right: 0.5rem;
+ bottom: 0.5rem;
+ font-size: 0.8rem;
+ }
+}
+
diff --git a/docs/TRANSLATING.md b/docs/TRANSLATING.md
new file mode 100644
index 0000000..f64ae15
--- /dev/null
+++ b/docs/TRANSLATING.md
@@ -0,0 +1,76 @@
+# Translating LibreMesh docs
+
+Thanks for helping translate the LibreMesh website. This page is a quick reference for contributors. Keep it short — most of what we need is just consistency.
+
+## How translations are organized
+
+Each non-English language has its own folder under `docs/`:
+
+```
+docs/
+├─ es/ # Español
+├─ pt-BR/ # Português (Brasil)
+└─ ... # English (the source of truth) lives at docs/ root
+```
+
+The folder mirrors the English tree. To start a new page in Spanish, copy the English file into `docs/es/...` and translate it. Keep the same filename, same front matter keys, same heading levels.
+
+## What to translate, what to leave alone
+
+**Translate:**
+- Headings, body prose, UI strings, link titles.
+- The English `title:` in the front matter.
+
+**Keep in English (do not translate):**
+- `Batman-adv`, `Babel`, `BMX7`, `OLSR` — protocol names.
+- `LiMe`, `LibreMesh`, `OpenWrt`, `LuCI`, `lime-app`, `thisnode.info`, `anygw`, `sysupgrade`, `factory` image, `squashfs-sysupgrade` — product / firmware terms.
+- CLI commands, file paths, package names, code blocks.
+- Brand names: `GitHub`, `Mastodon`, `Matrix`, `PeerTube`.
+
+**Tone:** direct, second person ("you"), no marketing speak. Match the English source's register — the original is intentionally plain.
+
+## What about pages that aren't translated yet?
+
+We **link out** to the English version with a small hint. For example, in `docs/es/getting-started.md`:
+
+```md
+Consulta la página [Conectarse al router (en)](/guide/connecting)
+```
+
+The `(en)` / `(em)` suffix tells the reader the link goes to English. This keeps the localized page readable without forcing you to translate every internal link.
+
+Do not invent `/es/...` paths for pages that don't exist in Spanish yet — they will 404.
+
+## Adding a new language
+
+1. Add a new `docs//` folder.
+2. Add a `locales` entry in `docs/.vitepress/config.mts` with `label`, `lang`, `link`, and a `themeConfig` with localized `nav` and `sidebar`. Mirror the structure of the existing `es` / `pt-BR` entries.
+3. Add the language code to the detection list in `docs/.vitepress/theme/LanguageBanner.vue` (`pickLocale` and `messages`) so first-visit visitors see the suggestion.
+4. Add the new locale to this guide's "What to keep in English" list if it introduces new untranslated brand terms.
+
+## First-visit language toast
+
+`LanguageBanner.vue` reads `navigator.language` and, on the first visit (no `localStorage` entry), shows a non-intrusive toast in the bottom-right corner suggesting the localized site. It is mounted via the `page-bottom` slot in `theme/index.ts` and uses `position: fixed`, so it never touches the nav and never shifts layout on mobile.
+
+The user choice is stored under `libremesh-lang-pref`:
+
+- `dismissed` — they declined; do not show again.
+- `es` / `pt-BR` — they accepted; the stored value is informational only (the actual locale is determined by the URL the user navigates to via the language switcher in the nav).
+
+If the user accepts the toast from a page that has a translated counterpart (e.g. they are on `/guide/connecting` and accept the Spanish toast), they land on the matching `/es/guide/connecting` — not the locale home. The mapping lives in `translatedPaths` inside the component; add new entries there when a new page gets translated in both languages.
+
+## Submitting a translation PR
+
+1. Translate the file (or create a new one) under the locale directory.
+2. Run `pnpm install && pnpm build` locally to make sure nothing breaks. The build also catches broken links to pages that don't exist yet — see "What about pages that aren't translated yet?" above.
+3. Open a PR against `main`. A native speaker should review before merge.
+4. If you translated a new English page (so the page now exists in both English and your language), add an entry to the `translatedPaths` map in `LanguageBanner.vue` so the toast can take the reader directly to the translated version.
+
+## Reviewing a translation PR
+
+A native speaker should review every translation PR before merge. Things to check:
+
+- Technical accuracy against the English source.
+- Glossary consistency with the list above.
+- No broken links: every link should either point to an existing `//...` path or carry the `(en)` / `(em)` hint.
+- The build still passes: `pnpm install && pnpm build`.
diff --git a/docs/es/build/buildroot.md b/docs/es/build/buildroot.md
new file mode 100644
index 0000000..8be234d
--- /dev/null
+++ b/docs/es/build/buildroot.md
@@ -0,0 +1,274 @@
+---
+aside: false
+---
+
+
+
+# Buildroot
+
+[[toc]]
+
+## Configuración del sistema de compilación
+Consulte la wiki de OpenWrt [Configuración del sistema de compilación](https://openwrt.org/docs/guide-developer/toolchain/install-buildsystem)
+para la lista de paquetes de otras distribuciones Linux.
+
+### Debian/Ubuntu/Mint
+```sh
+sudo apt update
+sudo apt install build-essential clang flex bison g++ gawk \
+gcc-multilib g++-multilib gettext git libncurses-dev libssl-dev \
+rsync swig unzip zlib1g-dev file wget bzip2
+```
+
+## Descarga
+
+### Clonar el código fuente de OpenWrt
+Consulte la wiki de OpenWrt [Uso del sistema de compilación](https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem).
+Ejecute todos los comandos anteriores como usuario normal (no uses root).
+
+::: code-group
+
+```sh-vue [{{ openwrt.stable_version }}]
+git clone -b v{{ openwrt.stable_version }} --single-branch https://github.com/openwrt/openwrt
+cd openwrt
+```
+
+```sh-vue [{{ openwrt.oldstable_version }}]
+git clone -b v{{ openwrt.oldstable_version }} --single-branch https://github.com/openwrt/openwrt
+cd openwrt
+```
+
+:::
+
+### Agregar los feeds de LibreMesh
+Copia el archivo de repositorios predeterminado de OpenWrt y agrega los repositorios de LibreMesh
+
+::: tip
+Usa `master` para compilar el último código de LibreMesh (compatible con openwrt-24.10 o más reciente)
+Usa `2024.1` para compilar la última versión de LibreMesh (compatible con openwrt-24.10 y openwrt-23.05)
+:::
+
+::: code-group
+
+```sh [master]
+cp feeds.conf.default feeds.conf
+cat << EOF >> feeds.conf
+src-git libremesh https://github.com/libremesh/lime-packages.git;master
+src-git profiles https://github.com/libremesh/network-profiles.git
+EOF
+```
+
+```sh [2024.1]
+cp feeds.conf.default feeds.conf
+cat << EOF >> feeds.conf
+src-git libremesh https://github.com/libremesh/lime-packages.git;v2024.1
+src-git profiles https://github.com/libremesh/network-profiles.git
+EOF
+```
+
+:::
+
+
+### Descargar e instalar paquetes de los feeds
+```sh
+scripts/feeds update -a
+scripts/feeds install -a
+```
+
+
+## Configuración
+
+### Usando menuconfig
+```
+make menuconfig
+```
+
+
+
+Consulta el `target`, `subtarget` y `profile` de tu router en la [Tabla de Hardware de OpenWrt](https://toh.openwrt.org).
+
+Selecciona entonces:
+- `Target System` - predeterminado `Mediatek ARM`
+- `Subtarget` - predeterminado `Filogic`
+- `Target Profile` - predeterminado `OpenWrt One`
+
+#### Selección de paquetes
+
+##### Paquetes predeterminados
+**Deselecciona** los paquetes conflictivos:
+
+- `Sistema base` -> `< >` `dnsmasq`
+- `Red` -> `< >` `odhcpd-ipv6only`
+
+Por defecto, LibreMesh usa `dnsmasq-dhcpv6` en lugar del `dnsmasq` predeterminado de OpenWrt y `odhcpd-ipv6only`.
+
+**Deselecciona** ubicaciones erróneas de feeds:
+
+- `Configuración de imagen` -> `Repositorios de feeds separados` -> `< >` `Habilitar feed libremesh`
+- `Configuración de imagen` -> `Repositorios de feeds separados` -> `< >` `Habilitar feed profiles`
+
+Los paquetes de OpenWrt están disponibles desde el servidor de descargas https://downloads.openwrt.org.
+Elimina los repositorios de LibreMesh de esta lista ya que no habrá paquetes precompilados disponibles allí.
+Los paquetes precompilados de LibreMesh están disponibles desde https://feed.libremesh.org/.
+Estos son instalables:
+- directamente en el router a través del gestor de paquetes
+- a través de ImageBuilder durante la generación del firmware
+
+##### Ahorrando espacio y RAM
+
+Opcionalmente, **deselecciona** paquetes no utilizados:
+- `Red` -> `< >` `ppp`
+- `Red` -> `< >` `ppp-mod-pppoe`
+- `Módulos del kernel` -> `Soporte de red` -> `< >` `kmod-ppp`
+- `Módulos del kernel` -> `Soporte de red` -> `< >` `kmod-pppoe`
+- `Módulos del kernel` -> `Soporte de red` -> `< >` `kmod-pppox`
+
+Consulta [Selección de paquetes](../guide/packages-selection#saving-space-and-ram) para obtener una lista de otros paquetes opcionalmente deseleccionables.
+
+##### Paquetes LibreMesh
+**Selecciona** (presiona la barra espaciadora hasta que aparezca un asterisco, como `<*>`) los paquetes de LibreMesh:
+
+
+
+* `LibreMesh` → `Documentación sin conexión` → `<*>` `lime-docs-minimal` (documentación mínima de LibreMesh)
+* `LibreMesh` → `<*>` `lime-app` (LimeApp) **(opcional)**
+* `LibreMesh` → `<*>` `lime-hwd-openwrt-wan` (Respetar la interfaz wan de openwrt como predeterminada)
+* `LibreMesh` → `<*>` `lime-proto-anygw` (Soporte de protocolo anygw de LibreMesh)
+* `LibreMesh` → `<*>` `lime-proto-babeld` (Soporte de protocolo babeld de LibreMesh)
+* `LibreMesh` → `<*>` `lime-proto-batadv` (Soporte de protocolo batman-adv de LibreMesh)
+* `LibreMesh` → `<*>` `shared-state`
+* `LibreMesh` → `<*>` `shared-state-async` **(opcional)**
+ * `<*>` `shared-state-babeld_hosts` (módulo babeld-hosts para shared-state)
+ * `<*>` `shared-state-bat_hosts` (módulo bat-hosts para shared-state) **(opcional)**
+ * `<*>` `shared-state-nodes_and_links` (módulo nodes_and_links para shared-state)
+* `LibreMesh` -> `<*>` `babeld-auto-gw-mode`
+* `LibreMesh` -> `<*>` `check-date-http` (Mantener la fecha local no muy alejada del desfase de NTP) **(opcional)**
+* `LibreMesh` -> `<*>` `Documentación sin conexión` -> `lime-docs` (documentación completa de LibreMesh) **(opcional)**
+* `LibreMesh` -> `<*>` `lime-debug` (utilidades de depuración de libremesh) **(opcional)**
+
+Los **paquetes opcionales** son recomendados pero no obligatorios para una red LibreMesh funcional.
+Considera evitar seleccionar estos paquetes `solamente` si la imagen creada es demasiado grande y no cabe en la memoria del router.
+
+Adicionalmente y de forma opcional, se puede habilitar httpS para la interfaz web seleccionando (ten en cuenta que la interfaz web se mostrará como *no confiable*):
+
+- `Utilidades` -> `Cifrado` -> `<*>` `px5g-standalone`
+
+Si planeas usar malla 802.11s encriptada, debes asegurarte de tener el paquete `wpad-mesh-*`, no `wpad-basic-*`, donde `*` es `mbedtls`, `openssl` o `wolfssl`. OpenWrt desde la rama 23.05 usa `mbedtls` de forma predeterminada.
+- `Red` -> `WirelessAPD` -> `< >` `wpad-basic-mbedtls`
+- `Red` -> `WirelessAPD` -> `<*>` `wpad-mesh-mbedtls`
+
+::: tip NOTA
+Para tener paquetes adicionales, la forma más fácil es seleccionarlos en menuconfig. Se pueden instalar más paquetes posteriormente a través de `apk` o el antiguo `opkg`, pero algunos requieren una configuración específica del kernel para funcionar. Esto se puede lograr siguiendo [estas instrucciones adicionales sobre kernel vermagic](../development/hacking/kernel_vermagic.md) Ten en cuenta que esto aumentará notablemente el tiempo y el espacio de almacenamiento requeridos para la compilación.
+:::
+
+#### Guardar la configuración
+Guarda la configuración y sal.
+
+#### Archivos adicionales
+
+En esta etapa, existe la posibilidad de incluir archivos personalizados en la imagen del firmware compilada. Para esto, tendrás que crear, dentro del directorio `openwrt/`, un directorio `files/` que contenga la estructura de directorios y los archivos que deseas agregar. Por ejemplo, si deseas tener un archivo `/etc/config/lime-community`, debes hacer lo siguiente:
+
+``` sh
+mkdir -p files/etc/config/
+touch files/etc/config/lime-community
+```
+
+y luego editar el archivo `lime-community` recién creado incluyendo tu contenido personalizado. Si un archivo de un paquete tiene el mismo nombre y ruta que un archivo en este directorio, será sobrescrito. Esta es una forma rápida de incluir un archivo de configuración personalizado, sin necesidad de crear un [perfil de red](../guide/network-profiles) en línea.
+
+
+##### Perfiles de Red
+Si tu comunidad local tiene un perfil en el [repositorio de perfiles de red](https://github.com/libremesh/network-profiles/), puedes seleccionarlo en:
+
+- LibreMesh -> perfil-de-red -> perfil-tu_comunidad-tu_perfil
+
+
+
+::: tip NOTA
+Los perfiles de red son la configuración específica de las comunidades, y se almacenan en este repositorio colectivo
+[repositorio](https://github.com/libremesh/network-profiles/), pero también pueden mantenerse localmente, dependiendo de cómo cada comunidad gestiona su red. Para obtener más instrucciones sobre cómo crear un perfil o cómo usar uno local, consulta la [página de perfiles de red](../guide/network-profiles).
+:::
+
+
+### Usando make defconfig
+
+#### exportar target-subtarget al entorno
+``` sh-vue
+export TARGET=ath79
+export SUBTARGET=generic
+```
+
+#### configuración
+
+#### Configuraciones de target, subtarget y generables
+
+```sh
+cat << EOF > .config
+CONFIG_TARGET_${TARGET}=y
+CONFIG_TARGET_${TARGET}_${SUBTARGET}=y
+CONFIG_TARGET_ROOTFS_INITRAMFS=y
+CONFIG_TARGET_MULTI_PROFILE=y
+CONFIG_TARGET_PER_DEVICE_ROOTFS=y
+# CONFIG_FEED_libremesh is not set
+# CONFIG_FEED_profiles is not set
+CONFIG_IMAGEOPT=y
+CONFIG_VERSIONOPT=y
+CONFIG_KERNEL_BUILD_USER=\"builder\"
+CONFIG_KERNEL_BUILD_DOMAIN=\"buildhost\"
+# CONFIG_VERSION_CODE_FILENAMES is not set
+EOF
+make defconfig
+```
+
+#### Módulos del kernel (opcional)
+Compilar opcionalmente todos los módulos del kernel para exponerlos posteriormente en un servidor http
+Necesario para instalar, a través del gestor de paquetes, paquetes que dependan de módulos del kernel no predeterminados.
+```sh
+cat << EOF >> .config
+CONFIG_DEVEL=y
+CONFIG_ALL_KMODS=y
+CONFIG_ALL_NONSHARED=y
+EOF
+make defconfig
+```
+
+#### Perfil del router
+Selecciona el perfil del router según el string compatible:
+
+```
+echo "CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_librerouter_librerouter-v1=y" >> .config
+make defconfig
+```
+
+#### Paquetes LibreMesh
+```sh
+cat << EOF >> .config
+# CONFIG_PACKAGE_dnsmasq is not set
+# CONFIG_PACKAGE_odhcpd-ipv6only is not set
+# CONFIG_PACKAGE_ppp is not set
+# CONFIG_PACKAGE_ppp-mod-pppoe is not set
+CONFIG_PACKAGE_kmod-ppp=m
+CONFIG_PACKAGE_kmod-pppoe=m
+CONFIG_PACKAGE_kmod-pppox=m
+CONFIG_PACKAGE_profile-libremesh-suggested-packages=y
+EOF
+make defconfig
+```
+
+## Compilar LibreMesh
+
+Finalmente, compila las imágenes
+```sh
+make -j$(nproc)
+```
+Consulta OpenWrt [consejos para make](https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem#make_tips) para obtener opciones detalladas.
+
+Si todo sale bien, deberías encontrar los binarios producidos dentro del directorio `bin/`.
+
+::: tip NOTA
+Si después de la compilación no ves la imagen compilada en la carpeta `bin/targets/.../.../`, puede ser que tu router tenga una memoria flash tan pequeña que los paquetes mencionados anteriormente no quepan en ella (también puede ocurrir con routers de 8 MB de memoria flash al seleccionar paquetes muy grandes para incluir). En este caso, puedes eliminar la lista de paquetes generada por `.config` y repetir la selección de paquetes sin incluir `lime-app`. Si la imagen compilada sigue siendo demasiado grande, prueba seleccionando solo `lime-proto-anygw`, `lime-proto-batadv` y `lime-proto-babeld` o siguiendo [esta guía](https://openwrt.org/docs/guide-user/additional-software/saving_space).
+:::
+
+Consulta las páginas en la **Guía de desarrollo** [testing](/development/testing) y [virtualización](/development/virtualizing)
+para emular en tu computadora con qemu.
diff --git a/docs/es/build/imagebuilder.md b/docs/es/build/imagebuilder.md
new file mode 100644
index 0000000..f649949
--- /dev/null
+++ b/docs/es/build/imagebuilder.md
@@ -0,0 +1,224 @@
+---
+aside: false
+---
+
+
+
+# ImageBuilder
+
+[[toc]]
+
+Consulte la wiki de OpenWrt [Uso del Image Builder](https://openwrt.org/docs/guide-user/additional-software/imagebuilder)
+para obtener opciones detalladas
+
+::: tip
+Encuentra el `target-subtarget` de tu dispositivo usando la [Tabla de Hardware de OpenWrt](https://toh.openwrt.org) o el [firmware-selector](https://firmware-selector.libremesh.org)
+:::
+
+
+## Configuración
+
+Exporta al entorno el `target-subtarget` y el paquete `architecture`
+``` sh-vue
+export TARGET={{ build.target }}
+export ARCH=$(curl -s https://downloads.openwrt.org/snapshots/.targets.json | \
+ sed 's/\//-/' | jq -r '.\"\${TARGET}\"')
+```
+
+### Compilación en Debian
+Consulte la wiki de OpenWrt [Uso del Image Builder](https://openwrt.org/docs/guide-user/additional-software/imagebuilder)
+
+- Instale los [prerrequisitos de OpenWrt ImageBuilder para Debian](https://openwrt.org/docs/guide-user/additional-software/imagebuilder#debianubuntumint)
+
+- Descargue el imagebuilder de su elección, extráigalo e ingrese a su directorio.
+
+::: code-group
+
+```sh-vue [{{ openwrt.stable_version }} (estable)]
+FILE_HOST="{{build.file_host}}"
+DOWNLOAD_PATH="{{download_path(openwrt.stable_version)}}"
+DOWNLOAD_FILE="{{build.download_file}}"
+
+mkdir imagebuilder; cd imagebuilder
+wget -nv "$FILE_HOST/$DOWNLOAD_PATH/sha256sums" -O sha256sums
+file_name="$(grep "$DOWNLOAD_FILE" sha256sums | cut -d "*" -f 2)"
+wget -nv "$FILE_HOST/$DOWNLOAD_PATH/$file_name"
+tar xf "$file_name" --strip=1 --no-same-owner -C .
+```
+
+```sh-vue [{{ openwrt.oldstable_version }} (antigua estable)]
+FILE_HOST="{{build.file_host}}"
+DOWNLOAD_PATH="{{download_path(openwrt.oldstable_version)}}"
+DOWNLOAD_FILE="{{build.download_file}}"
+
+mkdir imagebuilder; cd imagebuilder
+wget -nv "$FILE_HOST/$DOWNLOAD_PATH/sha256sums" -O sha256sums
+file_name="$(grep "$DOWNLOAD_FILE" sha256sums | cut -d "*" -f 2)"
+wget -nv "$FILE_HOST/$DOWNLOAD_PATH/$file_name"
+tar xf "$file_name" --strip=1 --no-same-owner -C .
+```
+
+```sh-vue [SNAPSHOT]
+FILE_HOST="{{build.file_host}}"
+DOWNLOAD_PATH="{{download_path('SNAPSHOT')}}"
+DOWNLOAD_FILE="{{build.download_file}}"
+
+mkdir imagebuilder; cd imagebuilder
+wget -nv "$FILE_HOST/$DOWNLOAD_PATH/sha256sums" -O sha256sums
+file_name="$(grep "$DOWNLOAD_FILE" sha256sums | cut -d "*" -f 2)"
+wget -nv "$FILE_HOST/$DOWNLOAD_PATH/$file_name"
+tar xf "$file_name" --strip=1 --no-same-owner -C .
+```
+
+:::
+
+
+### Compilación en Docker
+
+Inicia un ImageBuilder de tu elección, por ejemplo {{ build.target }} si tu dispositivo es compatible con él
+
+::: code-group
+
+```sh-vue [{{ openwrt.stable_version }} (estable)]
+mkdir ./images/
+docker run -it \
+ -e TARGET=$TARGET \
+ -e ARCH=$ARCH \
+ -v $(pwd)/config/:/builder/files/etc/config/ \
+ -v $(pwd)/images:/images/ \
+ ghcr.io/openwrt/imagebuilder:$TARGET-v{{ openwrt.stable_version }}
+```
+
+```sh-vue [{{ openwrt.oldstable_version }} (antigua estable)]
+mkdir ./images/
+docker run -it \
+ -e TARGET=$TARGET \
+ -e ARCH=$ARCH \
+ -v $(pwd)/config/:/builder/files/etc/config/ \
+ -v $(pwd)/images:/images/ \
+ ghcr.io/openwrt/imagebuilder:$TARGET-v{{ openwrt.oldstable_version }}
+```
+
+```sh-vue [SNAPSHOT]
+mkdir ./images/
+docker run -it \
+ -e TARGET=$TARGET \
+ -e ARCH=$ARCH \
+ -v $(pwd)/config/:/builder/files/etc/config/ \
+ -v $(pwd)/images:/images/ \
+ ghcr.io/openwrt/imagebuilder:$TARGET
+```
+
+:::
+
+## Agregar feeds de LibreMesh
+
+Dentro del contenedor, agrega los feeds de `lime-packages`.
+::: code-group
+
+
+```sh-vue [openwrt-{{ openwrt.stable_branch }} (estable)]
+cat << EOF >> repositories
+https://feed.libremesh.org/master/openwrt-{{ openwrt.stable_branch }}/x86_64/packages.adb
+https://feed.libremesh.org/master/openwrt-{{ openwrt.stable_branch }}/$ARCH/packages.adb
+https://feed.libremesh.org/profiles/openwrt-{{ openwrt.stable_branch }}/x86_64/packages.adb
+EOF
+
+cat << EOF > keys/libremesh.pem
+-----BEGIN PUBLIC KEY-----
+MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdFJZ2qVti49Ol8LJZYuxgOCLowBS
+8bI86a7zqhSbs5yon3JON7Yee7CQOgqwPOX5eMALGOu8iFGAqIRx5YjfYA==
+-----END PUBLIC KEY-----
+EOF
+```
+
+```sh-vue [openwrt-{{ openwrt.oldstable_branch }} (antigua estable)]
+cat << EOF >> repositories.conf
+src/gz libremesh_packages https://feed.libremesh.org/master/openwrt-{{ openwrt.oldstable_branch }}/x86_64
+src/gz libremesh_arch_packages https://feed.libremesh.org/master/openwrt-{{ openwrt.oldstable_branch }}/$ARCH
+src/gz profiles https://feed.libremesh.org/profiles/openwrt-{{ openwrt.oldstable_branch }}/x86_64
+EOF
+
+cat << EOF > keys/a71b3c8285abd28b
+untrusted comment: signed by libremesh.org key a71b3c8285abd28b
+RWSnGzyChavSiyQ+vLk3x7F0NqcLa4kKyXCdriThMhO78ldHgxGljM/8
+EOF
+```
+
+```sh-vue [apk - openwrt-SNAPSHOT]
+cat << EOF >> repositories
+https://feed.libremesh.org/master/openwrt-main/x86_64/packages.adb
+https://feed.libremesh.org/master/openwrt-main/$ARCH/packages.adb
+https://feed.libremesh.org/profiles/openwrt-main/x86_64/packages.adb
+EOF
+
+cat << EOF > keys/libremesh.pem
+-----BEGIN PUBLIC KEY-----
+MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdFJZ2qVti49Ol8LJZYuxgOCLowBS
+8bI86a7zqhSbs5yon3JON7Yee7CQOgqwPOX5eMALGOu8iFGAqIRx5YjfYA==
+-----END PUBLIC KEY-----
+EOF
+```
+
+:::
+
+## Archivos personalizados
+Idealmente, agrega tus propios archivos `lime-community` dentro del contenedor en la carpeta `./files/etc/config/`.
+Para encontrar todas las opciones posibles, consulta la página [`Configuration`][/reference/configuration].
+
+Ahora crea una imagen de tu elección; para ver los nombres de los perfiles compatibles, ejecuta primero `make info`.
+
+
+## Compilación
+
+```sh
+make image \
+ PROFILE=ubnt_unifi \
+ BIN_DIR=/images \
+ FILES=files \
+ PACKAGES="-dnsmasq -odhcpd-ipv6only \
+ lime-system lime-proto-babeld lime-proto-batadv lime-proto-anygw \
+ lime-hwd-openwrt-wan lime-hwd-ground-routing \
+ babeld-auto-gw-mode check-date-http batctl-default \
+ lime-app lime-debug lime-docs lime-docs-minimal \
+ shared-state-babeld_hosts shared-state-bat_hosts \
+ shared-state-dnsmasq_hosts shared-state-nodes_and_links"
+```
+
+### Compilación usando Perfiles de Red
+
+Consulta [Perfiles de Red](/guide/network-profiles)
+
+```sh
+make image \
+ PROFILE=ubnt_unifi \
+ BIN_DIR=/images \
+ FILES=files \
+ PACKAGES="-dnsmasq -odhcpd-ipv6only profile-libremesh-suggested-packages"
+```
diff --git a/docs/es/build/index.md b/docs/es/build/index.md
new file mode 100644
index 0000000..9af5b4d
--- /dev/null
+++ b/docs/es/build/index.md
@@ -0,0 +1,23 @@
+---
+outline: deep
+---
+
+# Compilar LibreMesh
+
+## Métodos recomendados
+
+### Firmware Selector
+Descargar el firmware para tu dispositivo a través del Firmware Selector.
+
+https://firmware-selector.libremesh.org
+
+El Firmware Selector solicita una compilación de firmware a través de una instancia de [`ASU`](https://github.com/openwrt/asu) (ImageBuilder en línea).
+
+### [ImageBuilder](imagebuilder)
+Ensamblar kernel precompilado, paquetes e información del dispositivo para producir el firmware
+
+### [Buildroot](buildroot)
+Compilar todo: herramientas, toolchain, kernel, paquetes, firmwares
+
+## Otros métodos
+Lista de [frontends de imagebuilder](https://openwrt.org/docs/guide-developer/imagebuilder_frontends) en la wiki de OpenWrt
diff --git a/docs/es/development/contributing.md b/docs/es/development/contributing.md
new file mode 100644
index 0000000..b86db24
--- /dev/null
+++ b/docs/es/development/contributing.md
@@ -0,0 +1,179 @@
+---
+title: "Guía de desarrollo"
+---
+# Contribuyendo
+
+Al contribuir a este repositorio, por favor discute primero el cambio que deseas hacer mediante un issue,
+correo electrónico o cualquier otro método antes de realizar un cambio.
+
+Por favor, ten en cuenta que tenemos un código de conducta, por favor síguelo en todas tus interacciones con el proyecto.
+
+## Forks y Pull Requests
+
+El desarrollo en lime-packages sigue el método Fork y Pull Request popularizado por GitHub:
+
+- Cada colaborador tiene su propia copia completa, llamada *Fork*
+- Los colaboradores implementan funcionalidades o corrigen errores en su propio fork en una rama de funcionalidad.
+- Cuando el colaborador desea integrar sus cambios de vuelta en el repositorio principal,
+ creará un *Pull Request*.
+
+Cada uno de estos pasos se discutirá a continuación:
+
+#### Forking
+
+Lo primero que necesitarás para desarrollar es crear una nueva copia del repositorio para
+trabajar. Esto se conoce como "Forking" y es una característica definitoria de los sistemas
+SCM distribuidos: cada persona trabaja en su propia copia completa del repositorio. Git está diseñado para
+hacer que mantener estos repositorios sincronizados sea trivialmente fácil pasando revisiones firmadas entre las
+copias individuales.
+
+Para crear un fork:
+
+1. Inicia sesión en GitHub y ve al [repositorio GitHub de lime-packages](https://github.com/libremesh/lime-packages).
+
+2. Haz clic en "Fork". Deberías ser redirigido a una copia completa del repositorio que ahora reside en tu cuenta.
+
+3. En tu estación de trabajo, crea un clon del repositorio Git:
+ ```git clone git@github.com:/lime-packages.git```
+ Esto creará otra copia completa del repositorio: una que residirá
+ en tu estación de trabajo.
+
+4. Haz checkout del branch `master`.
+ ```git checkout master```
+
+### Branching
+
+Cualquier cambio que se realice en la base de código de lime-packages debe hacerse en su propio branch. El branch
+debe crearse a partir de la punta de `master`, que es el branch de desarrollo. Antes de comenzar
+cualquier trabajo, asegúrate de obtener los últimos cambios upstream del repositorio.
+Hacer esto asegurará que tienes una copia actualizada de `master`, que los cambios realizados por otros
+no se perderán, y también reducirá las posibilidades de conflictos cuando llegue el momento de fusionar los
+cambios de vuelta a lime-packages.
+
+#### Nombres de Branch
+
+Solo existe un branch principal:
+
+- `master`: este branch es la versión de trabajo que está actualmente en desarrollo. Todos
+ los nuevos branches de funcionalidad deben crearse a partir de la punta de `master` y todos los PR deben tener `master`
+ establecido como destino.
+
+Para cualquier nuevo branch de funcionalidad, se recomienda la siguiente convención de nomenclatura:
+
+### `/`
+
+#### ``
+```
+issue - Cambios de código vinculados a un problema conocido.
+feature - Nueva funcionalidad.
+hotfix - Correcciones rápidas a la base de código.
+sandbox - Experimentos (nunca serán fusionados).
+```
+
+#### ``
+Siempre usa guiones para separar palabras, y mantenlo corto.
+
+##### Ejemplos
+```
+issue/133
+feature/smonit
+hotfix/driver-xxx
+sandbox/new-crazy-thing
+```
+
+#### Flujo de trabajo general
+
+El flujo de trabajo general para branching es el siguiente:
+
+1. Obtén los últimos cambios de `upstream` (es decir, del repositorio principal):
+
+ ```git fetch upstream master```
+
+2. Haz checkout de tu copia de `master` y fusiona los cambios upstream:
+
+ ```git checkout master```
+
+ ```git merge upstream/master```
+
+ Ahora tienes una copia actualizada del branch `master`.
+
+3. Crea un nuevo branch para tus cambios:
+
+ ```git checkout -b ```
+
+4. Ejecuta las pruebas: lee la [[documentación de pruebas](testing)].
+
+5. Realiza tus cambios, te recomendamos intentar agregar una prueba.
+
+6. Asegúrate de que las pruebas sigan ejecutándose correctamente.
+
+7. Envía los cambios a `origin` (es decir, tu fork)
+
+ ```git push origin ```
+
+8. Crea un nuevo Pull Request (ver más abajo).
+
+#### Creando un Pull Request
+
+Para integrar tus cambios en el repositorio principal de lime-packages, necesitarás
+crear un *Pull Request* en GitHub.
+
+1. Inicia sesión en GitHub y ve a tu fork de lime-packages.
+
+2. Haz clic en "New Pull Request"
+
+3. Asegúrate de que se establezcan las siguientes propiedades:
+
+ - Fork base = `libremesh/lime-packages`
+ - Base = `master`
+ - Fork de origen = tu fork de lime-packages
+ - Comparar = el branch que deseas fusionar
+
+4. Agrega una descripción de lo que es el cambio y haz clic en "Create Pull Request".
+
+En este punto, se recomienda notificar a uno de los otros desarrolladores del
+pull request y pedirle que realice una revisión rápida. Harán cualquier comentario
+en el pull request en sí, que deberías recibir como notificaciones de GitHub o como
+correos electrónicos.
+
+Una vez que el revisor haya aprobado el pull request, y GitHub haya indicado que se puede
+fusionar automáticamente, eres libre de fusionar el pull request.
+
+#### Manejo de conflictos
+
+A veces GitHub informará que el Pull Request no se puede fusionar automáticamente,
+lo que generalmente significa que hay conflictos de fusión.
+
+Por lo general, es una buena idea resolver los conflictos en el branch en el que estás trabajando,
+en lugar de hacerlo en `master`.
+
+Para hacerlo:
+
+1. Obtén los últimos cambios del branch upstream `master`
+
+ ```git fetch upstream master```
+
+2. Asegúrate de estar en tu rama de funcionalidad.
+
+3. Fusiona los cambios upstream en master. Verás "mensajes de conflicto"
+
+ ```git merge upstream/master```
+
+4. Usa una herramienta de fusión para resolver los conflictos. Si tienes una configurada con Git,
+ ejecutar `git mergetool` debería abrirla. Algunas herramientas GUI como
+ [esta](https://git-scm.com/download/gui/linux) tienen una integrada.
+
+5. Asegúrate de que la fusión fue exitosa construyendo y probando los cambios.
+
+6. Confirma los cambios y envía a origin.
+
+ ```git commit```
+
+ ```git push origin ```
+
+Si ya tienes un Pull Request pendiente, GitHub debería detectar los cambios
+recientes e indicar que el PR está listo para ser fusionado.
+
+### Más información
+
+Para más información, consulta [Collaborating on projects using issues and pull requests](https://help.github.com/categories/collaborating-on-projects-using-issues-and-pull-requests/) en la guía de ayuda de GitHub.
diff --git a/docs/es/development/hacking.md b/docs/es/development/hacking.md
new file mode 100644
index 0000000..9dcf33b
--- /dev/null
+++ b/docs/es/development/hacking.md
@@ -0,0 +1,7 @@
+---
+title: "Hacking"
+---
+# Hacking
+::: warning
+Esta página está pendiente de traducción. [Ver en inglés](/development/hacking).
+:::
diff --git a/docs/es/development/hacking/kernel_vermagic.md b/docs/es/development/hacking/kernel_vermagic.md
new file mode 100644
index 0000000..6f57563
--- /dev/null
+++ b/docs/es/development/hacking/kernel_vermagic.md
@@ -0,0 +1,5 @@
+---
+title: Magia do kernel
+---
+
+# {{ $frontmatter.title }}
\ No newline at end of file
diff --git a/docs/es/development/testing.md b/docs/es/development/testing.md
new file mode 100644
index 0000000..ed54c14
--- /dev/null
+++ b/docs/es/development/testing.md
@@ -0,0 +1,45 @@
+---
+title: "Guía de testing"
+---
+# Guía de testing
+
+LibreMesh cuenta con pruebas unitarias que nos ayudan a agregar nuevas funcionalidades manteniendo el esfuerzo de mantenimiento contenido.
+
+Alentamos a los colaboradores a escribir pruebas al agregar nuevas funcionalidades y también al corregir regresiones.
+
+Las pruebas unitarias de LibreMesh se basan en la poderosa biblioteca [busted](https://lunarmodules.github.io/busted/) que tiene una muy buena documentación.
+
+Las pruebas se ejecutan dentro de una imagen Docker x86_64 con algunas bibliotecas lua y openwrt disponibles.
+
+También tenemos una máquina virtual qemu para desarrollo, es una imagen completa de libremesh que se puede usar en desarrollo.
+
+## Cómo ejecutar las pruebas
+
+Simplemente ejecuta `./run_tests`:
+
+
+
+Esto construirá automáticamente la imagen de prueba de Docker en la primera ejecución y luego ejecutará las pruebas y creará el reporte de cobertura.
+Nota: debes tener Docker instalado y en ejecución.
+Nota: debes ejecutar las pruebas como `usuario no root`: para ejecutar docker sin root agrega tu usuario en el grupo docker, luego reinicia el docker.service, y vuelve a ingresar como tu propio usuario.
+```
+su root
+/sbin/groupadd docker
+/sbin/usermod -aG docker $USER
+systemctl restart docker
+su - $USER
+```
+Verifica que docker esté funcionando, debería devolver sin errores y una salida como la siguiente:
+```
+user@machine: docker ps -a
+CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
+```
+
+Usa `LUA_ENABLE_LOGGING=1 ./run_tests` si quieres enviar los logs a stdout.
+
+## Estructura del directorio de testing
+
+El código lua del paquete `foo` debe estar en la forma de *estructura de árbol de archivos expandida*:
+`package/foo/files/usr/lib/lua/foo.lua`
+
+Los archivos de prueba viven dentro de un directorio `tests` con sus nombres comenzando con `test_`:
\ No newline at end of file
diff --git a/docs/es/development/virtualizing.md b/docs/es/development/virtualizing.md
new file mode 100644
index 0000000..d310aba
--- /dev/null
+++ b/docs/es/development/virtualizing.md
@@ -0,0 +1,7 @@
+---
+title: "Ejecutar LibreMesh en QEMU"
+---
+# Testando emuladores
+::: warning
+Esta página está pendiente de traducción. [Ver en inglés](/development/virtualizing).
+:::
diff --git a/docs/es/diagrams/libremesh-interfaces-openwrt-one.md b/docs/es/diagrams/libremesh-interfaces-openwrt-one.md
new file mode 100644
index 0000000..b4b7540
--- /dev/null
+++ b/docs/es/diagrams/libremesh-interfaces-openwrt-one.md
@@ -0,0 +1,6 @@
+---
+sidebar: false
+layout: page
+---
+
+
diff --git a/docs/es/features.md b/docs/es/features.md
new file mode 100644
index 0000000..336cbd2
--- /dev/null
+++ b/docs/es/features.md
@@ -0,0 +1,13 @@
+---
+outline: deep
+---
+
+# Características
+
+## Modularidad
+
+Con una única base de código, LibreMesh ofrece una configuración por defecto razonable para los protocolos mesh más comunes: `Babel`, `B.A.T.M.A.N. advanced`, `BMX7`, `OLSR`.
+
+Puede usarse para unirse a una red mesh existente con una configuración mínima.
+
+Puede usarse como banco de pruebas para configuraciones con distintos protocolos.
diff --git a/docs/es/getting-started.md b/docs/es/getting-started.md
new file mode 100644
index 0000000..81c285c
--- /dev/null
+++ b/docs/es/getting-started.md
@@ -0,0 +1,82 @@
+---
+title: "Primeros pasos"
+---
+# Primeros pasos
+
+## Instalación
+
+### Requisitos
+Consulta la [Tabla de hardware (Table of Hardware)](https://toh.openwrt.org) para ver si tu dispositivo es compatible con OpenWrt.
+
+::: tip NOTA
+Se recomienda que el router tenga **al menos**:
+ - 16 MB de memoria flash y 128 MB de RAM.
+ - 1 radio funcionando a 2.4 GHz y 1 a 5 GHz
+
+Es posible instalar LibreMesh en routers con 8 MB de flash y 64 MB de RAM
+Lee el [`8/64 warning`](https://openwrt.org/supported_devices/864_warning) de OpenWrt y consulta la página [selección de paquetes (en)](/guide/packages-selection) para personalizar la compilación.
+:::
+
+::: warning ATENCIÓN
+Asegúrate de haber leído la página de la wiki de OpenWrt correspondiente a tu dispositivo.
+Lee las instrucciones de instalación y comprueba que dispones del hardware necesario —si hace falta— para instalar el firmware, como un [adaptador USB-UART/Serie](https://openwrt.org/docs/guide-user/installation/generic.flashing.serial) y/o un
+[adaptador USB-JTAG](https://openwrt.org/docs/techref/hardware/port.jtag)
+:::
+
+### Descargar el firmware
+---
+
+**Firmware Selector**
+El Firmware Selector solicita una compilación de firmware a través de una instancia de [`ASU`](https://github.com/openwrt/asu) (ImageBuilder en línea).
+
+https://firmware-selector.libremesh.org
+
+---
+
+**Versiones precompiladas**
+Archivo de lanzamientos antiguos con firmwares precompilados mediante Buildroot.
+
+https://firmware-libremesh.antennine.org
+
+---
+
+**Compila LibreMesh en tu equipo**
+Consulta la página [`Compilar LibreMesh` (en)](/build/) para ver las instrucciones de cómo compilar LibreMesh en tu equipo.
+
+---
+
+### Instalar el firmware
+Instala el firmware en tu dispositivo siguiendo el método de instalación indicado en la [wiki de OpenWrt](https://openwrt.org)
+o, si no aparece, busca las instrucciones en el mensaje de **`git-commit`** dejado por quien añadió el soporte para ese modelo de dispositivo. Consulta la [Tabla de hardware](https://toh.openwrt.org).
+
+::: tip NOTA
+Si tu dispositivo trae el firmware de fábrica, se recomienda **instalar OpenWrt primero**:
+:::
+
+1. Descarga el último firmware `stable` para tu dispositivo desde el [`OpenWrt Firmware Selector`](https://firmware-selector.openwrt.org).
+ Usa la imagen `factory` para la primera instalación. Consulta [Factory Install: First Time Installation (en)](https://openwrt.org/docs/guide-quick-start/factory_installation):
+2. Comprueba que el dispositivo con OpenWrt arranca y funciona correctamente.
+ Ten en cuenta que OpenWrt por defecto no enciende la Wi-Fi.
+ Actívala desde `LuCI` en el menú `Network` / `Wireless`.
+3. Actualiza a LibreMesh usando una imagen `squashfs-sysupgrade.bin`:
+ - Sube el firmware a través de la interfaz web `LuCI` desde el menú `System` / `Backup / Flash Firmware`.
+ - O instálalo por SSH usando el comando `sysupgrade -n firmware.bin`.
+
+
+## Conectarse al router
+Se puede acceder al router por web en http://thisnode.info.
+Consulta la página [Conectarse al router (en)](/guide/connecting) para ver las opciones detalladas y la resolución de problemas.
+
+
+## Configuración
+LibreMesh trae un [sabor por defecto (en)](/reference/flavors) que funciona sin más, sin necesidad de configuración manual.
+
+Consulta la página de [configuración (en)](/reference/configuration) para ver las opciones detalladas.
+
+
+## Mantenimiento
+Instala versiones estables más recientes de OpenWrt para mantener el dispositivo actualizado:
+- Suscríbete al boletín [`OpenWrt Announce`](https://lists.openwrt.org/mailman/listinfo/openwrt-announce).
+- O sigue al [`OpenWrt Announcement-Bot`](https://social.tchncs.de/@openwrt) en Mastodon.
+
+Consulta la página [Actualizar (en)](/guide/upgrade) para ver las operaciones recomendadas con LibreMesh.
diff --git a/docs/es/guide/connecting.md b/docs/es/guide/connecting.md
new file mode 100644
index 0000000..9f6dfb3
--- /dev/null
+++ b/docs/es/guide/connecting.md
@@ -0,0 +1,96 @@
+---
+title: "Conectarse al router"
+---
+# Conectarse al router
+
+## desde el navegador web
+En el FQDN del anygw por defecto http://thisnode.info.
+
+Estas direcciones también están disponibles:
+ - http://10.13.0.1 - anygw por defecto ipv4
+ - http://10.13.x.x - dirección ipv4 por defecto del nodo en la LAN `br-lan`
+ - http://meuno.info - otro FQDN del anygw
+ - http://minodo.info - otro FQDN del anygw
+ - http://\ - `hostname` del dispositivo
+ - http://\.thisnode.info - FQDN del dispositivo
+ - http://\[fd0d:fe46:8ce8::1\] - anygw por defecto ipv6
+ - http://\[fd0d:fe46:8ce8::x\:xx\] - dirección ipv6 por defecto del nodo en la LAN `br-lan`
+
+
+
+## por SSH
+
+Consulta [SSH a OpenWrt (en)](https://openwrt.org/docs/guide-quick-start/sshadministration)
+
+Se recomiendan los siguientes alias de bash:
+- `+ssh-rsa` - (opcional) Necesario si el nodo ejecuta una versión de OpenWrt anterior a la rama 23.05
+- `ussh` - un alias para:
+ - Ignorar los archivos de hosts conocidos, útil al conectarse a la dirección del Anygw `10.13.0.1` o al FQDN del anygw `thisnode.info`
+ - Desactivar `StrictHostKeyChecking`, útil para reconectar tras actualizar a una versión más reciente de OpenWrt sin "conservar la configuración".
+
+```sh
+cat << EOF >> ~/.bashrc
+alias ssh="ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa"
+alias ussh="ssh -o UserKnownHostsFile=/dev/null -o GlobalKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
+EOF
+source ~/.bashrc
+```
+
+Conéctate al dispositivo
+```sh
+ussh root@thisnode.info
+```
+
+Una vez establecida la conexión, se imprimirán los banners por defecto en la consola:
+```
+BusyBox v1.37.0 (2026-03-05 17:27:01 UTC) built-in shell (ash)
+
+ _______ ________ __
+ | |.-----.-----.-----.| | | |.----.| |_
+ | - || _ | -__| || | | || _|| _|
+ |_______|| __|_____|__|__||________||__| |____|
+ |__| W I R E L E S S F R E E D O M
+ -----------------------------------------------------
+ OpenWrt 25.12.0, r32713-f919e7899d Dave's Guitar
+ -----------------------------------------------------
+
+ === WARNING! =====================================
+ There is no root password defined on this device!
+ Use the "passwd" command to set up a new password
+ in order to prevent unauthorized SSH logins.
+ --------------------------------------------------
+
+ ___ __ __ _______ __
+ | |_|__| |--.----.-----.| | |-----.-----| |--.
+ | | | _ | _| -__|| | -__|__ --| |
+ |_____|__|_____|__| |_____||__|_|__|_____|_____|__|__|
+
+ ------------------------------------------------------
+ LiMe master development (master rev. 7929208 20260304_1752)
+ ------------------------------------------------------
+ https://libremesh.org
+ ------------------------------------------------------
+
+ === System Notes =================================================
+
+ = edit via http://thisnode.info/app/#/notes or /etc/banner.notes =
+
+
+ OpenWrt recently switched to the "apk" package manager!
+
+ OPKG Command APK Equivalent Description
+ ------------------------------------------------------------------
+ opkg install apk add Install a package
+ opkg remove apk del Remove a package
+ opkg upgrade apk upgrade Upgrade all packages
+ opkg files apk info -L List package contents
+ opkg list-installed apk info List installed packages
+ opkg update apk update Update package lists
+ opkg search apk search Search for packages
+ ------------------------------------------------------------------
+
+For more information visit:
+https://openwrt.org/docs/guide-user/additional-software/opkg-to-apk-cheatsheet
+
+root@openwrt:~#
+```
diff --git a/docs/es/guide/network-profiles.md b/docs/es/guide/network-profiles.md
new file mode 100644
index 0000000..1778121
--- /dev/null
+++ b/docs/es/guide/network-profiles.md
@@ -0,0 +1,86 @@
+---
+title: "Perfiles de red"
+---
+# Perfiles de red
+
+## O que é um Perfil de Rede?
+
+Perfis de rede são a forma mais conveniente para uma comunidade organizar seus arquivos de configuração. Durante o [processo de compilação](/build/buildroot), os usuários podem selecionar o perfil de rede desejado, que selecionará automaticamente todo o software necessário e incluirá os arquivos de configuração para essa comunidade.
+
+Eles estão organizados em pastas com algum conteúdo no [repositório de perfis de rede](https://github.com/libremesh/network-profiles).
+
+## Como criar um Perfil de Rede
+
+Praticamente, cada comunidade pode criar uma pasta no [repositório de perfis de rede](https://github.com/libremesh/network-profiles) com o nome da comunidade e, dentro dela, criar um ou mais perfis (por exemplo, você pode ter perfis diferentes para nós do backbone ou para pontos de acesso, ou para nós com memória flash ou RAM grande ou pequena).
+
+Você precisará criar um usuário no GitHub, fazer um fork do [repositório de perfis de rede](https://github.com/libremesh/network-profiles), clonar seu fork em um computador, criar os diretórios, criar um `Makefile` (veja abaixo), adicionar conteúdo na pasta `root/` (veja abaixo), confirmar as alterações, enviá-las para seu fork e finalmente abrir um pull request do seu repositório para o [repositório oficial de perfis](https://github.com/libremesh/network-profiles).
+
+### Clonando seu fork
+
+Aqui omitiremos a explicação da maioria dos passos relacionados com git e GitHub; pesquise na internet como realizá-los ou nos pergunte nos [canais de comunicação do projeto](/communication).
+
+Depois de fazer fork do [repositório de perfis de rede](https://github.com/libremesh/network-profiles) com seu usuário, clone seu fork:
+
+``` sh
+git clone git@github.com:seu_usuario/network-profiles.git
+```
+
+### Criando os diretórios
+
+Cada comunidade terá que criar seu diretório.
+
+``` sh
+cd network-profiles
+mkdir MinhaRede.cool
+```
+
+E dentro desse diretório, você terá que criar uma pasta para cada perfil diferente que desejar ter. A maioria das comunidades terá apenas um perfil.
+
+``` sh
+cd MinhaRede.cool
+mkdir padrao
+mkdir baixamem
+mkdir gateway
+```
+
+### Criando um Makefile
+
+Os Perfis de Rede são convertidos em pacotes que, como mencionado acima, incluirão alguns arquivos mas também podem selecionar um novo software para ser instalado como dependência. Para compilá-los como pacotes, é necessário um Makefile.
+
+No Makefile você pode indicar uma descrição e incluir uma lista de dependências, que são os pacotes selecionados ao escolher seu perfil de rede.
+
+O Makefile para o repositório de perfis de rede deve estar dentro do diretório do perfil, por exemplo `network-profiles/MinhaRede.cool/padrao/Makefile`, e terá o seguinte aspecto:
+
+``` makefile
+include $(TOPDIR)/rules.mk
+
+PROFILE_DESCRIPTION:=Perfil padrão para a comunidade MinhaRede
+PROFILE_DEPENDS:=+lime-proto-babeld +lime-proto-batadv +lime-proto-anygw
+
+include ../../profile.mk
+
+# call BuildPackage - Assinatura do buildroot do OpenWrt
+```
+
+e as linhas que você deve personalizar são apenas as de PROFILE_DESCRIPTION e PROFILE_DEPENDS. Na lista de PROFILE_DEPENDS, observe que o nome de cada pacote é precedido por um `+`. Não há necessidade de especificar o pacote `lime-system` pois já está incluído.
+
+### Adicionando arquivos à pasta "root"
+
+Para incluir arquivos personalizados na imagem compilada, você pode criar uma pasta `root/` na pasta do perfil, por exemplo `network-profiles/MinhaRede.cool/padrao/root/`. Neste diretório, você terá que criar a estrutura de pastas e os arquivos que deseja ter no firmware compilado.
+
+O que é sempre interessante incluir é um arquivo `lime-community`, que é o arquivo contendo as opções de configuração para sua comunidade. Este arquivo precisará aparecer na imagem do firmware em `/etc/config/lime-community`, para que você precise criá-lo aqui em `network-profiles/MinhaRede.cool/padrao/root/etc/config/lime-community`.
+
+
+
+### Alternativa ao uso de Perfis de Rede
+
+Usar um perfil de rede é uma forma conveniente de compartilhar arquivos pela internet com todos os outros membros de sua comunidade; mas pode ser exagerado se você só quer testar adicionando um arquivo de vez em quando.
+
+No buildroot (que é o sistema que você pode usar para compilar o LibreMesh conforme descrito na [página de desenvolvimento](/build/buildroot)) você pode criar um diretório chamado `files`, e o conteúdo deste diretório sobrescreverá, na imagem final do LibreMesh, todos os arquivos com o mesmo caminho e nome, incluindo os do Perfil de Rede selecionado.
+
+Por exemplo:
+``` sh
+cd openwrt
+mkdir files
+rsync -aPh --delete ~/network-profiles/valsamoggia.ninux.org/vs-ninux-generic/root/ files/
+```
diff --git a/docs/es/guide/packages-selection.md b/docs/es/guide/packages-selection.md
new file mode 100644
index 0000000..bc3daa2
--- /dev/null
+++ b/docs/es/guide/packages-selection.md
@@ -0,0 +1,134 @@
+---
+outline: deep
+---
+
+
+# Selección de paquetes
+
+## Personalización de la compilación
+
+Se recomienda realizar una personalización de la compilación. La principal ventaja de preinstalar todos los paquetes necesarios es preservar el **espacio del firmware** y la **RAM utilizada** en el dispositivo.
+
+::: tip NOTA
+Es posible instalar nuevo software a través del gestor de paquetes `opkg` o el más reciente `apk`.
+Se **desaconseja encarecidamente** actualizar paquetes. Lee la [`advertencia sobre actualización de paquetes`](https://openwrt.org/meta/infobox/upgrade_packages_warning) de OpenWrt.
+:::
+
+::: warning Advertencia ath9k
+Los routers con radios Atheros y el controlador `ath9k` tienen un fallo conocido que hace que se queden sordos,
+si usas una versión de OpenWrt anterior a la 24.10.6 asegúrate de incluir el paquete de libremesh `wifi-unstuck-wa`
+:::
+
+::: warning Advertencia ath10k
+Los routers con radios Atheros y el controlador predeterminado de OpenWrt `ath10k-ct` (ath10k fabricado por CandelaTech) son inestables/defectuosos con malla 80211s, solo funcionan con chipsets wave2. Reemplaza los paquetes relacionados con `ath10k-ct` por los paquetes `ath10k` correspondientes.
+:::
+
+
+## Ahorrando espacio y RAM
+
+- https://openwrt.org/supported_devices/864_warning
+- https://openwrt.org/docs/guide-user/additional-software/saving_space
+
+### Sabor Mini
+
+Para dispositivos `8/64` debería ser posible instalar una versión reducida del `sabor por defecto`.
+Consulta los detalles de los paquetes excluidos en [Sabor Mini](/reference/flavors)
+Esta lista de paquetes también es seleccionable incluyendo el perfil de red `profile-libremesh-suggested-packages-tiny`.
+
+
+
+### Excluyendo paquetes
+
+Por defecto, LibreMesh usa `dnsmasq-dhcpv6` en lugar del `dnsmasq` predeterminado de OpenWrt y `odhcpd-ipv6only`.
+Asegúrate de incluir una eliminación para estos al construir LibreMesh mediante ImageBuilder o Buildroot.
+
+
+Adicionalmente, estos paquetes podrían ser excluidos en la compilación del firmware:
+
+::: code-group
+
+``` [{{ openwrt.stable_version }}]
+-dnsmasq -odhcpd-ipv6only -apk-mbedtls -ca-bundle -ppp -ppp-mod-pppoe
+```
+
+``` [{{ openwrt.oldstable_version }}]
+-dnsmasq -odhcpd-ipv6only -opkg -ca-bundle -ppp -ppp-mod-pppoe
+```
+
+:::
+
+La misma lista para usar al construir con Buildroot.
+::: code-group
+
+
+``` [{{ openwrt.stable_version }}]
+cat << EOF >> .config
+CONFIG_PACKAGE_dnsmasq=m
+CONFIG_PACKAGE_odhcpd-ipv6only=m
+CONFIG_PACKAGE_apk-mbedtls=m
+CONFIG_PACKAGE_ca-bundle=m
+CONFIG_PACKAGE_ppp=m
+CONFIG_PACKAGE_ppp-mod-pppoe=m
+EOF
+make defconfig
+```
+
+``` [{{ openwrt.oldstable_version }}]
+cat << EOF >> .config
+CONFIG_PACKAGE_dnsmasq=m
+CONFIG_PACKAGE_odhcpd-ipv6only=m
+CONFIG_PACKAGE_opkg=m
+CONFIG_PACKAGE_ca-bundle=m
+CONFIG_PACKAGE_ppp=m
+CONFIG_PACKAGE_ppp-mod-pppoe=m
+EOF
+make defconfig
+```
+
+:::
+
+#### `apk-mbedtls`
+- Descripción: gestor de paquetes apk
+- Tamaño instalado: `258 KiB` (mediatek-filogic-v25.12.0)
+
+El router no podrá instalar paquetes después de la instalación
+
+#### `opkg`
+- Descripción: gestor de paquetes opkg (openwrt-24.10 y anteriores)
+
+El router no podrá instalar paquetes después de la instalación.
+
+#### `ca-bundle`
+- Descripción: Certificados CA del sistema como un paquete
+- Tamaño instalado: `219 KiB` (mediatek-filogic-v25.12.0)
+
+El router no podrá usar TLS, es decir, descargar datos de sitios que usen solo `https:` en lugar de `http:`
+
+#### `ppp`
+- Descripción: Este paquete contiene el demonio PPP (Protocolo Punto a Punto).
+- Tamaño instalado: `355 KiB` (mediatek-filogic-v25.12.0)
+
+Exclúyelo si no necesitas establecer conexiones ppp
+
+#### `ppp-mod-pppoe`
+- Descripción: Este paquete contiene un plugin PPPoE (PPP sobre Ethernet) para ppp.
+- Tamaño instalado: `65 KiB` (mediatek-filogic-v25.12.0)
+
+Exclúyelo si no necesitas establecer conexiones pppoe
+
+### Ejemplo de compilación
+
+```
+make image \
+ PROFILE=ubnt_unifi \
+ BIN_DIR=/images \
+ FILES=files \
+ PACKAGES="-dnsmasq -odhcpd-ipv6only \
+ -apk-mbedtls -ca-bundle -ppp -ppp-mod-pppoe \
+ profile-libremesh-suggested-packages-tiny"
+```
diff --git a/docs/es/guide/upgrade.md b/docs/es/guide/upgrade.md
new file mode 100644
index 0000000..364b345
--- /dev/null
+++ b/docs/es/guide/upgrade.md
@@ -0,0 +1,69 @@
+---
+title: "Actualización"
+---
+# Actualización
+
+::: tip PRECAUCIÓN
+De vez en cuando, algunos dispositivos OpenWrt pueden encontrar problemas al actualizar y resultar "brickeados" o "brickeados parcialmente".
+Asegúrate de haber **leído las notas de liberación de OpenWrt** para la `versión`/`rama` que estás instalando.
+
+En **entornos de producción con múltiples nodos LibreMesh** desplegados, es recomendable mantener al menos un dispositivo, por cada modelo que estés usando, para probar que las actualizaciones funcionan bien. O eventualmente recuperarlo usando un `Adaptador USB Serie`.
+:::
+
+Consulta la wiki de OpenWrt para obtener detalles sobre el proceso de actualización:
+- [Sysupgrade](https://openwrt.org/docs/techref/sysupgrade)
+- [Actualización del firmware OpenWrt usando LuCI y CLI](https://openwrt.org/docs/guide-user/installation/generic.sysupgrade)
+- [Preservar la configuración de OpenWrt durante la actualización del firmware](https://openwrt.org/docs/guide-quick-start/admingui_sysupgrade_keepsettings)
+
+
+## Sysupgrade
+El comando predeterminado de OpenWrt `sysupgrade` preserva:
+- archivos definidos en `/lib/upgrade/keep.d`
+- la lista de `conffiles` (archivos de configuración definidos por ciertos paquetes) que han sido modificados:
+ - Ve la lista completa para `apk` con `cat /lib/apk/packages/*.conffiles`
+ - Ve la lista completa para `opkg` con `cat /usr/lib/opkg/info/*.conffiles`
+
+Los archivos iniciales se conservan en `/rom/` y los archivos modificados se crean en `/overlay/upper/`.
+
+```
+apk add diffutils
+diff /overlay/upper/etc/config/babeld /rom/etc/config/babeld
+```
+
+
+## Ejemplos
+
+### Actualizar a una nueva versión mayor de OpenWrt
+Ejemplo que mantiene solo `lime-node` y `dropbear`.
+
+Sobrescribe la lista de archivos a conservar manteniendo solo lo esencial.
+Recomendado si toda la configuración está en `lime-node`.
+```
+mkdir /tmp/keep.d; mv /lib/upgrade/keep.d/* /tmp/keep.d/
+mv /usr/lib/opkg/status /tmp/opkg_status
+for i in /etc/config/dropbear /etc/dropbear /etc/config/lime-node; do echo $i >> /etc/sysupgrade.conf; done
+sysupgrade -l
+```
+
+Descarga el archivo sysupgrade
+```
+wget -O /tmp/firmware.bin
+```
+la url del archivo syupgrade es por ejemplo https://sysupgrade-01.antennine.org/store/45347ae7f75029abc37f0a4e41ebf9af72ef7b9ce8c93ff27a7d7ec5e9a54b2e/openwrt-25.12.0-82ccd0311e22-mediatek-filogic-cudy_wr3000s-v1-squashfs-sysupgrade.bin
+
+Actualiza el router
+```
+sysupgrade -v /tmp/firmware.bin
+```
+
+## Herramientas
+Herramientas para actualizar la versión base de OpenWrt y los paquetes LibreMesh:
+
+### eupgrade
+proporciona actualizaciones semi-automatizadas verificando si un nuevo firmware está disponible desde un servidor https.
+
+### owut
+proporciona actualizaciones usando una instancia de [`ASU`](https://github.com/openwrt/asu) (imagebuilder en línea). Pruébalo instalando el paquete `profile-antennine.org-an-lime-owut`
+
+### safe-upgrade
+Wrapper alrededor de `sysupgrade`. Requiere almacenamiento flash grande, al menos el doble del tamaño del firmware, para poder revertir en caso de que algo no funcione.
diff --git a/docs/es/index.md b/docs/es/index.md
new file mode 100644
index 0000000..a22b526
--- /dev/null
+++ b/docs/es/index.md
@@ -0,0 +1,78 @@
+---
+# https://vitepress.dev/reference/default-theme-home-page
+layout: home
+
+hero:
+ name: "LibreMesh"
+ text: "Un framework modular para crear firmwares basados en OpenWrt para nodos de mesh inalámbricos"
+ tagline: Hacer posible las redes libres
+ image:
+ src: /lime.svg
+ actions:
+ - theme: brand
+ text: ¿Qué es LibreMesh?
+ link: /es/what-is-libremesh
+ - theme: alt
+ text: Primeros pasos
+ link: /es/getting-started
+ - theme: alt
+ text: Firmware Selector
+ link: https://firmware-selector.libremesh.org
+
+features:
+ - icon:
+ src: /network_topology_mesh_icon.png
+ title: Redes mesh
+ details:
+ Las redes mesh son redes en las que todos los participantes (nodos) pueden enrutar el tráfico de otros participantes.
+ No hay puntos centrales y la topología física puede ser completamente aleatoria.
+ Por lo general, las redes mesh son descentralizadas, organizadas desde abajo hacia arriba, desplegadas y mantenidas por las personas que las usan.
+ Creemos que es la única manera de conseguir una red realmente libre, fuera del control de gobiernos y empresas globales.
+ - icon:
+ src: /gnu_logo.png
+ title: Redes libres, sociedad libre
+ details: Entendemos que una red libre, como red de telecomunicaciones, debe cumplir estos tres puntos.
+ Es abierta, así que cualquiera puede conectarse si es físicamente posible.
+ Es neutral, por lo que no hay preferencias por el tipo, origen o destino de los datos.
+ Es libre como la libertad (libre significa "free as in free speech" en inglés).
+ Todo lo que desarrollamos es software libre para una sociedad libre, de modo que cualquiera pueda usarlo, copiarlo, modificarlo y distribuirlo bajo la licencia AGPL.
+
+ - icon:
+ src: /openwrt_logo_icon.png
+ title: Firmware y dispositivos embebidos
+ details: Un dispositivo embebido es una computadora pequeña. Normalmente, al sistema operativo que corre en esas computadoras pequeñas se le llama firmware.
+ Nuestra forma de desplegar redes mesh libres es instalando nuestro propio firmware en los dispositivos (normalmente routers WiFi).
+ Nuestro sistema se basa en el proyecto OpenWrt, que a su vez se basa en el conocido sistema operativo Linux.
+---
+
+## Organizaciones que apoyan a LibreMesh:
+
+| | | | |
+| -------------| ----------------- | -------------------------- | ------------------------------------- |
+| AlterMundi | Argentina | https://altermundi.net |  |
+| Coolab | Brasil | https://wiki.coolab.org |  |
+| FreiFunk | Alemania | https://freifunk.net |  |
+| FunkFeuer | Austria | https://funkfeuer.at |  |
+| Guifi | Península Ibérica | https://guifi.net |  |
+| IBEBrasil | Brasil | https://ibebrasil.org.br |  |
+| LibreRouter | Global | https://librerouter.org |  |
+| Ninux | Italia | https://ninux.org |  |
+| NUPEF | Brasil | https://nupef.org.br/ | |
+| Wakoma | Global | https://wakoma.co |  |
+
+## Redes mesh comunitarias que usan LibreMesh:
+
+| | | | |
+| --------------- | ------------------- | ----------------------------------------- | ------------------------- |
+| Antennine | Bolonia, Italia | https://antennine.noblogs.org |  |
+| Calafou | Cataluña | https://calafou.org/ | |
+| Coolab | Brasil | https://www.coolab.org/ | |
+| Janastu CowMesh | Karnataka rural | https://open.janastu.org/projects/cowmesh | |
+| NUPEF | Brasil | https://nupef.org.br/ | |
+
+
diff --git a/docs/es/reference/configuration.md b/docs/es/reference/configuration.md
new file mode 100644
index 0000000..467628d
--- /dev/null
+++ b/docs/es/reference/configuration.md
@@ -0,0 +1,57 @@
+---
+outline: deep
+---
+
+# Configuración
+
+## lime-files
+
+La configuración de LibreMesh se realiza principalmente mediante un conjunto de archivos `/etc/config/lime-`.
+Estos archivos se pueden gestionar a través de la [UCI](https://openwrt.org/docs/guide-user/base-system/uci) de OpenWrt
+o editarse manualmente usando `vim`.
+Para modificarlos a través de la [interfaz web LuCI](https://openwrt.org/docs/guide-user/luci/luci.essentials) instala `luci-app-filemanager`.
+
+Las opciones contenidas en estos archivos se combinan y sobrescriben desde la prioridad más baja a la más alta:
+
+``` sh-vue
+/etc/config/
+├─ lime-defaults # NO EDITAR, configuración predeterminada
+├─ lime-community # configuración de la comunidad
+├─ lime- # configuración del nodo, específica del dispositivo
+├─ lime-node # configuración del nodo
+└─ lime-autogen # NO EDITAR, configuración autogenerada
+```
+### Secciones
+La configuración se divide en tres secciones principales:
+- `config lime system` - Opciones del sistema: nombre de host, dominio, root_password
+- `config lime network` - Opciones de red: ipv4/ipv6, resolutores DNS, lista de protocolos, opciones de protocolos
+- `config lime wifi` - Opciones inalámbricas: lista de modos, opciones de AP/Ad-Hoc/ApUP/80211s
+
+Por defecto, seguido de configuraciones específicas de la banda de radio:
+- `config lime-wifi-band 2ghz`
+- `config lime-wifi-band 5ghz`
+
+Opcionalmente, seguido de secciones específicas de interfaz y opciones específicas de protocolos
+- `config net port1`
+- `config wifi radio0`
+
+::: tip Sección específica de interfaz
+Las secciones específicas de interfaz deben incluirse en `lime-node` o `lime-`.
+:::
+
+Opcionalmente, seguido de otros protocolos específicos, scripts y configuraciones uci, o hardware_modules
+- `config bgp_peer peer1`
+- `config generic_uci_config uhttpd_https`
+- `config hwd_watchcat periodic_reboot`
+
+### Opciones parametrizables
+Dentro de `lime-files`, las opciones marcadas con `Parametrizable con %Mn, %Nn, %H`, pueden incluir las plantillas:
+- `%Mn`: reemplazado por la n-ésima byte de la MAC de la **`primary_interface`**
+- `%Nn`: reemplazado por la n-ésima (n = 1..5) byte del identificador de red, calculado a partir del **hash de `ap_ssid`**.
+ Todos los nodos que forman una nube mesh (comparten el mismo `ap_ssid`) producirán el mismo valor
+- `%H`: reemplazado por el `hostname`
+
+
+## lime-config
+El comando `lime-config` configura LibreMesh sobre OpenWrt.
+Consulta la página [lime-config](lime-config) para obtener los detalles.
diff --git a/docs/es/reference/flavors.md b/docs/es/reference/flavors.md
new file mode 100644
index 0000000..9bf606f
--- /dev/null
+++ b/docs/es/reference/flavors.md
@@ -0,0 +1,96 @@
+---
+title: "Sabores"
+---
+
+
+# Flavors
+
+## Flavor por defecto
+
+### Lista de paquetes
+El flavor `default` de LibreMesh contiene estos paquetes:
+
+
+### Configuración
+
+#### Puerto WAN
+Configurar como WAN
+Configurar protocolos predeterminados sobre él:
+- `babeld:17` - crea una soft VLAN 8021ad número 17 y ejecuta babel sobre ella
+- `batadv:%N1` - crea una soft VLAN 8021ad número %N1 y la agrega a la lista de interfaces batman-adv
+
+Esto crea 3 interfaces:
+- `wan@eth0` - cliente dhcp
+- `wan_17@eth0` - VLAN babeld 17 8021ad
+- `wan_29@eth0` - VLAN babeld 29 8021ad
+
+#### Puertos LAN
+Agregar cada puerto lan al bridge principal `br-lan`
+Configurar protocolos predeterminados sobre cada puerto:
+- `babeld:17` - crea una soft VLAN 8021ad número 17 y ejecuta babel sobre ella
+- `batadv:%N1` - crea una soft VLAN 8021ad número %N1 y la agrega a la lista de interfaces batman-adv
+
+Configurar br-lan con opciones de red:
+- `main_ipv4_address`
+- `main_ipv6_address`
+
+Crea 3 interfaces para cada puerto lan:
+- `lan@eth1` - dispositivo sin gestión: los paquetes sin etiquetar irán a la interfaz `br-lan`
+- `lan_17@eth1` - VLAN babeld 17 8021ad
+- `lan_29@eth1` - VLAN babeld 29 8021ad
+
+#### Radios `2ghz` y `5ghz`
+Configurar modos predeterminados `ieee80211s`, `ap`, `apname`
+
+Configurar protocolos predeterminados sobre cada puerto:
+- `babeld:17` - crea una soft VLAN 8021ad número 17 y ejecuta babel sobre ella
+- `batadv:%N1` - crea una soft VLAN 8021ad número %N1 y la agrega a la lista de interfaces batman-adv
+
+
+
+#### Anygw
+El bridge br-lan incluye puertos ethernet `lan` así como interfaces de radio configuradas como Punto de Acceso (modo `ap` o `apname`)
+
+Sobre `br-lan` se configura una interfaz `mac-vlan` para la función `anygateway`.
+Las direcciones MAC/ipv4/ipv6 de esta interfaz son las mismas para todos los nodos que comparten el mismo `lime-autogen.wifi.ap_ssid`
+
+#### Estado compartido
+Un demonio Conflict-Free Replicated Data Type (CRDT).
+Este módulo habilita el intercambio de información entre nodos en una red descentralizada, garantizando consistencia y confiabilidad.
+
+Los archivos no se persisten por defecto en la memoria flash, se pueden ver en `/tmp/shared-state/data/`
+La información compartida por defecto depende de los `publishers` instalados de shared-state.
+
+- shared-state-babeld_hosts - nodos conectados a `babeld`
+- shared-state-bat_hosts - nodos conectados a `batadv`
+- shared-state-nodes_and_links
+
+
+## Flavor Mini
+
+### Lista de paquetes
+El flavor `mini` de LibreMesh contiene estos paquetes:
+
+
+
+### Configuración
+La configuración es la misma que la del flavor por defecto.
+
+### Paquetes excluidos
+Los paquetes eliminados son:
+
+- batctl-default - Utilidad CLI para gestionar interfaces batman-adv con comandos de depuración; en su ausencia se instala batctl-tiny
+- lime-app - la interfaz web
+- lime-docs - documentación sin conexión
+- lime-debug - conjunto de herramientas de depuración que incluye `tcpdump`, `mtr`, `iperf3`
+- shared-state-async - shared-state más reciente en C++
+- lime-hwd-ground-routing - para gestionar conexiones de enrutamiento terrestre
diff --git a/docs/es/reference/generic_config.md b/docs/es/reference/generic_config.md
new file mode 100644
index 0000000..2d7fc00
--- /dev/null
+++ b/docs/es/reference/generic_config.md
@@ -0,0 +1,38 @@
+---
+title: "Configuraciones UCI genéricas"
+---
+
+# Configuraciones UCI genéricas
+Secciones adicionales de LibreMesh para:
+- `generic_uci_config` - Define configuraciones adicionales de OpenWrt.
+- `copy_asset` - Copia un archivo del directorio de assets a una ruta especificada.
+- `run_assets` - Ejecuta un archivo desde el directorio de assets, esquema explicado en copy_asset.
+
+La principal ventaja de estas secciones es permitir al usuario mantener toda la configuración de LibreMesh dentro de `lime-files` (un `lime-community` genérico y eventualmente un `lime-node` específico).
+Consulte los [valores predeterminados UCI de OpenWrt](https://openwrt.org/docs/guide-developer/uci-defaults) para métodos estándar de **integración de configuraciones personalizadas**.
+
+## generic_uci_config
+```
+config generic_uci_config 'uhttpd_https'
+ list uci_set 'uhttpd.main.redirect_https=0'
+```
+Por defecto, uhttpd recibe la instrucción de evitar la redirección forzada de http a https.
+
+## copy_asset
+Copia un archivo del directorio de assets a una ruta especificada.
+Los directorios de assets del nodo son /etc/lime-assets/node y /etc/lime-assets/community.
+El directorio de la comunidad debe contener los mismos archivos en todos los nodos de la comunidad.
+
+```
+config copy_asset collectd
+ option asset 'community/collectd.conf' # ou 'node/collectd.conf' ou 'community/mynode_collectd.conf'
+ option dst '/etc/collectd.conf'
+```
+
+## run_asset
+Ejecuta un archivo desde el directorio de assets, esquema explicado en copy_asset.
+```
+config run_asset dropbear
+ option asset 'community/dropbear.sh'
+ option when 'ATFIRSTBOOT' # ATFIRSTBOOT, ATCONFIG
+```
diff --git a/docs/es/reference/hardware_detection/ground_routing.md b/docs/es/reference/hardware_detection/ground_routing.md
new file mode 100644
index 0000000..55e5295
--- /dev/null
+++ b/docs/es/reference/hardware_detection/ground_routing.md
@@ -0,0 +1,28 @@
+---
+title: "Enrutamiento terrestre"
+---
+# Enrutamiento terrestre
+
+Una sección para cada enlace de enrutamiento terrestre.
+
+Con enrutamiento terrestre nos referimos a configuraciones que tienen LibreMesh en un router que está conectado mediante cable(s), eventualmente a través de un switch,
+a algunos routers inalámbricos que ejecutan el firmware original en modo WDS (puente transparente) Ap/Sta.
+
+Probablemente quieras configurar tantas secciones de enrutamiento terrestre con diferentes números de VLAN o diferentes puertos de switch como dispositivos conectados en modo WDS.
+Para una descripción detallada consulta https://github.com/libremesh/lime-packages/issues/443
+
+```
+config hwd_gr link1
+ option net_dev 'eth0'
+ option vlan '5'
+ option switch_dev 'switch0'
+ option switch_cpu_port '0'
+ list switch_ports '4t'
+
+```
+
+- `option net_dev 'eth0'` - Dispositivo ethernet plano sobre el cual se construirá la VLAN 802.1q. En caso de duda, consulta https://openwrt.org/toh/start
+- `option vlan '5'` - ID de VLAN para usar para este enlace de enrutamiento terrestre, usa un número pequeño porque los switches económicos no soportan IDs grandes. esto también se usará como VID 802.1q en puertos etiquetados
+- `option switch_dev 'switch0'` - Estas opciones relativas al switch deben establecerse solo si tu dispositivo ethernet está conectado a un chip de switch. Si el switch existe puedes leer su nombre (como switch0) en el archivo /etc/config/network
+- `option switch_cpu_port '0'` - Consulta el mapa de puertos del switch de tu dispositivo en https://openwrt.org/toh/start para conocer el índice del puerto CPU
+- `list switch_ports '4t'` - Lista de puertos del switch en los que deseas que se transmita la VLAN, usa el sufijo 't' para especificar que el puerto está etiquetado, consulta https://openwrt.org/toh/start para la correspondencia con los puertos físicos
diff --git a/docs/es/reference/hardware_detection/watchcat.md b/docs/es/reference/hardware_detection/watchcat.md
new file mode 100644
index 0000000..ba52a7e
--- /dev/null
+++ b/docs/es/reference/hardware_detection/watchcat.md
@@ -0,0 +1,35 @@
+---
+outline: deep
+---
+
+# Secciones específicas de Watchcat
+
+## Referencia
+- [Watchcat - utilidad de vigilancia de red](https://openwrt.org/docs/guide-user/advanced/watchcat)
+
+## Ejemplos
+### ping_reboot
+Una sección para cada regla de vigilancia ping que desees definir.
+Reinicia el dispositivo por ping si el gateway (o cualquier IP) es inalcanzable
+```
+config hwd_watchcat default
+ option mode 'ping_reboot'
+ option pinghosts '4.2.2.2'
+ option pingperiod '30s'
+ option period '6h'
+ option forcedelay '1m'
+```
+
+- `pinghost '4.2.2.2'` - Resolvedor por defecto de Level3
+- `pingperiod '30s'` - Enviar un ping cada 30 segundos
+- `period '6h'` - Reiniciar si falla continuamente durante 6h
+- `forcedelay '1m'` - Esperar hasta 1m para un reinicio suave
+
+### periodic_reboot
+Reinicio periódico del dispositivo después de cierto tiempo de actividad
+```
+config hwd_watchcat periodic_reboot
+ option mode 'periodic_reboot'
+ option period '27h'
+ option forcedelay '1m'
+```
diff --git a/docs/es/reference/lime-config.md b/docs/es/reference/lime-config.md
new file mode 100644
index 0000000..7d5da6c
--- /dev/null
+++ b/docs/es/reference/lime-config.md
@@ -0,0 +1,129 @@
+---
+outline: deep
+---
+
+# lime-config
+El comando `lime-config` configura LibreMesh sobre OpenWrt.
+
+## lime-files
+Estos archivos se combinan desde el nivel bajo `lime-defaults` hasta el nivel alto `lime-node` para producir la configuración completa en `lime-autogen`.
+
+## Módulos
+Los módulos se configuran en este orden `hardware_detection`, `wireless`, `network`, `firewall`, `system`, `generic_config`.
+
+### hardware_detection
+Carga todos los paquetes que comienzan con `lime-hwd-*`
+`lime-hwd-openwrt-wan` configura la puerta WAN de OpenWrt como WAN. Si está deshabilitado, o el paquete no está instalado, la puerta WAN se configura como LAN.
+
+### wireless
+Escanea el dispositivo OpenWrt para encontrar radios existentes.
+Produce la configuración UCI para cada radio, cargando configuraciones de `lime-autogen` en el orden:
+- `config lime 'wifi'` (opciones generales wifi)
+- `config lime '5ghz'` (opciones específicas de banda)
+- `config lime '2ghz'` (opciones específicas de banda)
+- `config radioN` (opciones específicas de radio)
+
+### network
+
+#### escaneo
+Escanea el dispositivo OpenWrt para encontrar dispositivos ethernet existentes.
+
+#### protocolos generales
+Configura todos los `protocolos generales` desde `lime-autogen.network.protocols`
+
+#### protocolos específicos de interfaz
+Para cada dispositivo ethernet, si está presente una sección `config net` específica, la usa; de lo contrario, toma la lista de protocolos de los `protocolos generales`.
+Configura todos los protocolos en el dispositivo ethernet.
+
+El archivo `lime-defaults` proporciona la configuración predeterminada para una amplia lista de protocolos.
+Solo se configuran los protocolos para los cuales el paquete relativo `lime-proto-` está instalado.
+En la configuración predeterminada son
+- `ieee80211s` incluido en el paquete `lime-system`
+- `lan` incluido en el paquete `lime-system`
+- `anygw` - proporcionado por `lime-proto-anygw`
+- `babeld` - proporcionado por `lime-proto-babeld`
+- `batadv` - proporcionado por `lime-proto-batadv`
+
+### firewall
+Proporciona una configuración predeterminada para: configuración general, zona LAN, zona WAN.
+Consulta las [zonas de firewall de OpenWrt](https://openwrt.org/docs/guide-user/firewall/firewall_configuration#zones).
+
+#### predeterminado
+`configuración de firewall predeterminada:
+`input: ACCEPT`
+`output: ACCEPT`
+`forward: ACCEPT`
+
+#### Zona LAN
+Proporciona la configuración de firewall predeterminada para la `Zona LAN`, y actualiza la lista de interfaces lan:
+
+Ejemplo de configuración autogenerada en un router de banda dual con 4 puertos lan/1 wan ethernet.
+```
+config zone
+ option name 'lan'
+ list network 'lan'
+ list network 'lm_net_br_lan_anygw_if'
+ list network 'lm_net_wlan0_mesh_batadv_if'
+ list network 'lm_net_wlan0_mesh_babeld_if'
+ list network 'lm_net_wlan1_mesh_batadv_if'
+ list network 'lm_net_wlan1_mesh_babeld_if'
+ list network 'lm_net_lan1_babeld_if'
+ list network 'lm_net_lan1_batadv_if'
+ list network 'lm_net_lan2_batadv_if'
+ list network 'lm_net_lan2_babeld_if'
+ list network 'lm_net_wan_batadv_if'
+ list network 'lm_net_wan_babeld_if'
+ list network 'lm_net_lan3_batadv_if'
+ list network 'lm_net_lan3_babeld_if'
+ list network 'lm_net_lan4_batadv_if'
+ list network 'lm_net_lan4_babeld_if'
+ option input 'ACCEPT'
+ option output 'ACCEPT'
+ option forward 'ACCEPT'
+ option mtu_fix '1'
+```
+
+`mtu_fix: 1` - Habilita el ajuste del tamaño máximo de segmento (MSS) también para LAN. Habilitado por defecto solo para WAN.
+`network: ` - Lista de interfaces dentro del bridge `br-lan`
+ Las interfaces LAN se determinan anteriormente durante la configuración del protocolo de red `lan`
+
+
+#### Zona WAN
+Mantiene la configuración predeterminada de OpenWrt.
+
+```
+config zone
+ option name 'wan'
+ list network 'wan'
+ list network 'wan6'
+ option input 'REJECT'
+ option output 'ACCEPT'
+ option forward 'REJECT'
+ option masq '1'
+ option mtu_fix '1'
+```
+
+### system
+Configura `hostname` y `root_password`
+
+### generic_config
+Lee y ejecuta las secciones `generic_uci_config`, `copy_asset` y `run_asset`.
+Aplica configuración UCI personalizada o copia/ejecuta scripts de shell.
+Consulta la página [Generic Config](generic_config) para conocer las opciones detalladas.
+
+
+## Confirmar cambios
+Los cambios son confirmados por el comando `lime-config` y escritos en archivos `/etc/config/`.
+::: tip
+Asegúrate de no perder la conexión a tu dispositivo después de la configuración.
+Para aplicar los cambios de la forma más segura, realiza un `reboot` del dispositivo.
+:::
+
+### lime-apply
+En la mayoría de los casos, se puede omitir el reinicio ejecutando el comando `lime-apply`, que llama al `reload_config` de OpenWrt.
+Dependiendo de las configuraciones cambiadas, puede ser necesario un reinicio completo de algunos servicios, como `wireless`, `network` y `firewall`.
+```
+lime-config; lime-apply; wifi; \
+/etc/init.d/network restart; \
+/etc/init.d/firewall restart
+```
diff --git a/docs/es/reference/network/index.md b/docs/es/reference/network/index.md
new file mode 100644
index 0000000..17c0954
--- /dev/null
+++ b/docs/es/reference/network/index.md
@@ -0,0 +1,115 @@
+---
+outline: deep
+---
+
+# Opciones de rede
+A configuração de cada dispositivo de rede é calculada a partir de:
+- as **opções gerais** em `config lime network`,
+- uma **seção específica de interface** opcional relativa a esse dispositivo de rede específico.
+
+## Valores padrão
+Valores padrão conforme `/etc/config/lime-defaults`
+```
+config lime network
+ option primary_interface 'eth0'
+ option main_ipv4_address '10.%N1.0.0/16'
+ option anygw_dhcp_start '2'
+ option anygw_dhcp_limit '0'
+ option main_ipv6_address 'fd%N1:%N2%N3:%N4%N5::/64'
+ list protocols ieee80211s
+ list protocols lan
+ list protocols anygw
+ list protocols batadv:%N1
+ list protocols olsr:14
+ list protocols olsr6:15
+ list protocols olsr2:16
+ list protocols babeld:17
+ list protocols bmx7:18
+ list resolvers 4.2.2.2 # b.resolvers.Level3.net
+ list resolvers 141.1.1.1 # cns1.cw.net
+ list resolvers 2001:470:20::2 # ordns.he.net
+ option bmx7_mtu '1500'
+ option bmx7_publish_ownip false
+ option bmx7_over_batman false
+ option bmx7_pref_gw none
+ option bmx7_wifi_rate_max 'auto'
+ option bmx7_enable_pki false
+ option batadv_orig_interval '2000'
+ option batadv_routing_algo 'BATMAN_IV'
+ option anygw_mac "aa:aa:aa:%N1:%N2:aa"
+ option use_odhcpd false
+```
+
+## Opções gerais
+```
+config lime 'network'
+ option primary_interface 'eth0'
+ option main_ipv4_address '10.%N1.0.0/16'
+ option main_ipv6_address 'fd%N1:%N2%N3:%N4%N5::/64'
+```
+
+### primary_interface
+- Tipo: `string`
+- Padrão: `eth0`
+
+```
+config lime network
+ option primary_interface 'eth0'
+```
+
+O endereço mac deste dispositivo será usado em diferentes lugares.
+Uma lista parcial inclui:
+- Opções parametrizadas com `%Mn`
+- As interfaces soft do Batman-adv usam os últimos 3 bytes da interface principal bat0 que é igual ao mac de `primary_interface`
+
+### main_ipv4_address
+- Tipo: `||`
+- Padrão: `10.%N1.0.0/16`
+- Parâmetro 1: sub-rede (obrigatório)
+- Parâmetro 2: parametrização de IP auto-atribuído ao nó
+
+```
+config lime network
+ option main_ipv4_address '10.%N1.0.0/16'
+```
+
+Aqui você tem 4 possibilidades:
+- `static` - `10.0.2.1/16` - define um IP estático e a sub-rede
+- `parametrizado` - `10.%N1.%M5.%M6/16` - Parametrizável com %Mn e %Nn e define a sub-rede
+- `endereco-de-rede` - `10.%N1.0.0/16` - Define um endereço de rede inteiro (não um IP específico) para obter o IP autocompletado nessa rede com bits do endereço MAC. isso funciona também com máscaras de rede diferentes de `/24` ou `/16`, como `10.0.128.0/17` (mas não endereços de rede válidos, por exemplo `192.0.128.0/16` ou `192.0.129.0/17` não serão parametrizados).
+- `endereco-de-rede` - `10.0.128.0/16/17` - Usa o segundo parâmetro para a parametrização de IP do nó. Isso resulta em sub-rede `/16` mas o IP do roteador LibreMesh será auto-atribuído em uma faixa `/17` (de 10.0.128.1 a 10.0.255.254).
+
+### main_ipv6_address
+- Tipo: `string`
+- Padrão: `fd%N1:%N2%N3:%N4%N5::/64`
+- Parâmetro 1: sub-rede (obrigatório) padrão `/64`
+- Parâmetro 2: parametrização de IP auto-atribuído ao nó
+
+```
+config lime network
+ option main_ipv4_address '10.%N1.0.0/16'
+```
+
+Parametrizável da mesma forma que `main_ipv4_address`.
+Se usado, o autopreenchimento de IP preencherá no máximo os últimos 24 bits, então especificar uma faixa de autopreenchimento de IP maior que /104 não é útil.
+
+## Servidores DNS
+
+### list resolvers
+- Tipo: `list`
+- Padrão: `4.2.2.2 141.1.1.1 2001:470:20::2`
+
+```
+config lime network
+ list resolvers 4.2.2.2 # b.resolvers.Level3.net
+ list resolvers 141.1.1.1 # cns1.cw.net
+ list resolvers 2001:470:20::2 # ordns.he.net
+```
+
+Servidores DNS que o nó usará. A lista é ordenada de cima para baixo.
+Defina cada entrada vazia para usar o servidor DNS upstream (do provedor de internet)
+
+```
+config lime network
+ list resolvers ''
+```
diff --git a/docs/es/reference/network/interface-specific.md b/docs/es/reference/network/interface-specific.md
new file mode 100644
index 0000000..d88b999
--- /dev/null
+++ b/docs/es/reference/network/interface-specific.md
@@ -0,0 +1,102 @@
+---
+outline: deep
+---
+
+# Opciones específicas de interfaz de red
+
+## Configurar un puerto ethernet
+Crea una sección llamada `port2` para el dispositivo de red `lan2`
+No pongas ningún `.` en el nombre de la sección.
+```
+config net port2
+ option linux_name 'eth0.2'
+ ...
+```
+
+Protocolos disponibles: `apbb, batadv, babeld, bgp, bmx7, client, lan, manual, olsr, olsr2, olsr6, static, wan`
+
+::: tip manual
+Si usas el protocolo `manual` no especifiques otros protocolos, puede resultar en un comportamiento/configuración impredecible (probablemente pierdas la conexión al nodo)
+:::
+
+## Ejemplos
+### Puerto WAN
+Configura un puerto ethernet de red como WAN usando el protocolo `wan` o `static`.
+
+LibreMesh en el sabor por defecto configura un cliente DHCPv4 en la interfaz WAN predeterminada de OpenWrt.
+La sección `lm_hwd_openwrt_wan` se crea en `lime-autogen` por el paquete `lime-hwd-openwrt-wan` en caso
+de que se detecte un puerto ethernet WAN.
+
+::: tip
+Modifica `lm_hwd_openwrt_wan` para asignar a la interfaz de red WAN un dispositivo de red ethernet diferente
+como un puerto lan, y/o para establecer una ip estática.
+Hacer esto, en lugar de deshabilitarlo, asegura que Babeld comparta la ruta predeterminada desde esta interfaz
+a través del paquete `babeld-auto-gw-mode`.
+:::
+
+#### Modificar `lm_hwd_openwrt_wan`
+Configura el puerto ethernet eth1.5 como WAN con direcciones ipv4 e ipv6 estáticas
+```
+config net lm_hwd_openwrt_wan
+ option autogenerated 'false'
+ option linux_name 'eth1.5'
+# list protocols 'wan'
+ list protocols 'static'
+ option static_ipv4 '192.168.1.2/24'
+ option static_gateway_ipv4 '192.168.1.1'
+ option static_ipv6 '2a00:1508:0a00::1234/64'
+ option static_gateway_ipv6 'fe80::1'
+```
+
+- `autogenerated 'false'` - Esto indica a lime-hwd-openwrt-wan que no destruya y reescriba esta sección
+- `linux_name 'eth1.5'` - Asignar a la interfaz de red WAN un dispositivo de red ethernet diferente.
+- `protocols 'wan'` - Usa 'wan' en lugar de 'static' para obtener conectividad a Internet vía DHCP.
+ Si se necesita una VLAN en la interfaz WAN para conectar al gateway,
+ se puede especificar con `wan:ID`, como `wan:20` o `wan:20:8021q`
+
+
+#### wan (Cliente DHCP)
+Usa el protocolo `wan` para obtener conectividad a Internet vía DHCP
+```
+config net lm_hwd_openwrt_wan
+ option autogenerated 'false'
+
+config net port1_wan
+ option linux_name 'lan1'
+ list protocols 'wan'
+```
+- `autogenerated 'false'` - Especifica que la configuración del puerto ethernet WAN ha sido editada manualmente, creando una configuración vacía para él y deshabilitándolo prácticamente
+
+#### static (ipv4/ipv6)
+Usa protocolos `static` y especifica el 'IPv4/subred' del router y el gateway IPv4, y/o 'IPv6/subred' y el gateway IPv6.
+```
+config net lm_hwd_openwrt_wan
+ option autogenerated 'false'
+
+config net port1_wan
+ option linux_name 'lan1'
+ list protocols 'static'
+ option static_ipv4 '192.168.1.2/24'
+ option static_gateway_ipv4 '192.168.1.1'
+ option static_ipv6 '2a00:1508:0a00::1234/64'
+ option static_gateway_ipv6 'fe80::1'
+```
+- `autogenerated 'false'` - Especifica que la configuración del puerto ethernet WAN ha sido editada manualmente, creando una configuración vacía para él y deshabilitándolo prácticamente
+
+
+### Puerto solo LAN
+Configura `lan1` para que los usuarios se conecten, no para la conexión a otros nodos.
+```
+config net port1
+ option linux_name 'lan1'
+ list protocols 'lan'
+```
+
+### Puerto solo malla
+El protocolo `batadv:%N1` debe especificarse si el otro nodo está en la misma nube mesh, es decir, mismo `ap_ssid`.
+```
+config net port1
+ option linux_name 'lan1'
+ list protocols 'batadv:%N1'
+ list protocols 'babeld:17'
+```
diff --git a/docs/es/reference/network/protocols-list.md b/docs/es/reference/network/protocols-list.md
new file mode 100644
index 0000000..beb9b16
--- /dev/null
+++ b/docs/es/reference/network/protocols-list.md
@@ -0,0 +1,175 @@
+---
+outline: deep
+---
+
+# Lista de protocolos de red
+
+Los valores predeterminados según `lime-defaults`
+```
+config lime 'network'
+ list protocols anygw
+ list protocols batadv:%N1
+ list protocols babeld:17
+ list protocols bmx7:18
+ list protocols ieee80211s
+ list protocols lan
+ list protocols olsr:14
+ list protocols olsr2:16
+ list protocols olsr6:15
+```
+
+## Protocolos de red
+Lista de protocolos configurados por LibreMesh, solo `lan` e `ieee80211s` están incluidos en el paquete `lime-system`
+Los demás requieren el paquete relativo `lime-proto-`.
+
+::: tip NOTA
+Si estableces algunos protocolos en `/etc/config/lime-node`, o `/etc/config/lime-community` sobrescribes la *lista completa* de protocolos establecida en `/etc/config/lime-defaults`
+:::
+
+Verifica la lista aplicada en `lime-autogen`
+```sh
+uci get lime-autogen.network.protocols
+```
+
+### anygw
+- Predeterminado: `habilitado`
+- Paquetes requeridos: `lime-proto-anygw`
+```
+ list protocols anygw
+```
+
+### batadv
+- Predeterminado: `habilitado`
+- Paquetes requeridos: `lime-proto-batadv`
+- Parámetro 1: `vlan_number` predeterminado `%N1` (de 29 a 256)
+- Parámetro 2: `vlan_type` predeterminado `8021ad`
+- Tipo del parámetro 2: `8021ad|8021q`
+
+```
+ list protocols batadv:%N1
+```
+Si la vlan es `0`, las etiquetas están deshabilitadas y el enrutamiento se realiza en la interfaz sin etiquetar.
+```
+ list protocols batadv:0
+```
+
+::: tip
+Consulta la página sobre [batman-adv](protocols/batman-adv) para la configuración predeterminada.
+:::
+### babeld
+- Predeterminado: `habilitado`
+- Paquetes requeridos: `lime-proto-babeld`
+- Parámetro 1: `vlan` predeterminado `17`
+
+```
+ list protocols babeld:17
+```
+::: tip
+Consulta la página sobre [babeld](protocols/babeld) para la configuración predeterminada.
+:::
+
+### bmx7
+- Predeterminado: `habilitado`
+- Paquetes requeridos: `lime-proto-bmx7`
+- Parámetro 1: `vlan` predeterminado `18`
+
+```
+ list protocols bmx7:18
+```
+
+### ieee80211s
+- Predeterminado: `habilitado`
+```
+ list protocols ieee80211s
+```
+
+### lan
+- Predeterminado: `habilitado`
+```
+ list protocols lan
+```
+
+### olsr
+- Predeterminado: `habilitado`
+- Paquetes requeridos: `lime-proto-olsr`
+- Parámetro 1: `vlan`
+
+```
+ list protocols olsr:14
+```
+No uses un ID de VLAN entre 29 y 284, ya que este rango está reservado para batadv:%N1
+
+### olsr2
+- Predeterminado: `habilitado`
+- Paquetes requeridos: `lime-proto-olsr2`
+```
+ list protocols olsr2:16
+```
+### olsr6
+- Predeterminado: `habilitado`
+- Paquetes requeridos: `lime-proto-olsr6`
+```
+ list protocols olsr6:15
+```
+
+## Otros protocolos de red
+
+### bgp
+- Paquetes requeridos: `lime-proto-bgp`
+
+```
+config bgp_peer peer1
+ option remoteIP '192.0.2.6'
+ option remoteAS '65550'
+
+config bgp_peer peer2
+ option remoteIP '2001:db8::c001'
+ option remoteAS '65549'
+```
+
+Una sección para cada par BGP
+
+## Protocolos específicos de interfaz
+Los siguientes protocolos solo deben incluirse en una sección específica de interfaz, es decir, `config net lan1`. Consulta la siguiente página para obtener más detalles.
+
+::: tip NOTA
+Los siguientes protocolos deben incluirse en una sección específica de interfaz `config net `
+:::
+
+### manual
+
+Deshabilita lime-config para `lan1`
+```
+config net port1
+ linux_name 'lan1'
+ list protocols 'manual'
+```
+::: warning NOTA
+Si usas `manual` no debes especificar otros protocolos en el mismo puerto, o tu configuración se romperá!
+:::
+
+### static
+```
+config net port1
+ option linux_name 'lan1'
+ list protocols 'static'
+ option static_ipv4 '192.168.1.2/24'
+ option static_gateway_ipv4 '192.168.1.1'
+ option static_ipv6 '2a00:1508:0a00::1234/64'
+ option static_gateway_ipv6 'fe80::1'
+```
+
+- `static_gateway_ipv4|static_gateway_ipv6` - Omite esta línea si no se debe agregar una ruta predeterminada en esta interfaz.
+
+### wan
+- Paquetes requeridos: `lime-proto-wan`
+
+```
+config net port1_wan
+ option linux_name 'lan1'
+ list protocols 'wan'
+```
+
+El [sabor por defecto](/reference/flavors) incluye el paquete `lime-proto-hwd-openwrt-wan` que instala `lime-proto-wan`
+y configura el puerto WAN predeterminado de OpenWrt como WAN.
+
diff --git a/docs/es/reference/network/protocols-options.md b/docs/es/reference/network/protocols-options.md
new file mode 100644
index 0000000..e15d3bb
--- /dev/null
+++ b/docs/es/reference/network/protocols-options.md
@@ -0,0 +1,198 @@
+---
+outline: deep
+---
+
+# Opciones de protocolos de red
+
+Los valores predeterminados según `lime-defaults`
+```
+config lime 'network'
+ option anygw_dhcp_start '2'
+ option anygw_dhcp_limit '0'
+ option anygw_mac "aa:aa:aa:%N1:%N2:aa"
+ option batadv_orig_interval '2000'
+ option batadv_routing_algo 'BATMAN_IV'
+ option bmx7_mtu '1500'
+ option bmx7_publish_ownip false
+ option bmx7_over_batman false
+ option bmx7_pref_gw none
+ option bmx7_wifi_rate_max 'auto'
+ option bmx7_enable_pki false
+ option use_odhcpd false
+```
+
+## anygw
+
+::: tip NOTA
+El paquete `lime-proto-anygw` está incluido en el [`sabor por defecto`](/reference/flavors)
+:::
+
+### anygw_dhcp_start
+- Tipo: `number`
+- Predeterminado: `2`
+- Paquetes requeridos: `lime-proto-anygw`
+
+```
+config lime network
+ option anygw_dhcp_start '2'
+```
+
+Primera IP en la subred que se usará para DHCP para clientes.
+Por ejemplo, si la subred es 10.x.0.0/16 y quieres que los clientes obtengan una IPv4 de un grupo DHCP comenzando en 10.x.100.2, el parámetro de inicio deberá ser 100 * 256 + 2 = 25602.
+
+### anygw_dhcp_limit
+- Tipo: `number`
+- Predeterminado: `0`
+- Paquetes requeridos: `lime-proto-anygw`
+
+```
+config lime network
+ option anygw_dhcp_limit '0'
+```
+
+Número de IPs disponibles para DHCP.
+Usa cero para que el grupo DHCP abarque desde anygw_dhcp_start hasta el final de la subred.
+Por ejemplo, si la subred es 10.x.0.0/16, el inicio del grupo DHCP está en 10.x.100.2 y quieres que termine en 10.x.127.254,
+el parámetro límite deberá ser (127 - 100) * 256 + (254 - 2) + 1 = 7165.
+
+### anygw_mac
+- Tipo: `string`
+- Predeterminado: `aa:aa:aa:%N1:%N2:aa`
+- Paquetes requeridos: `lime-proto-anygw`
+
+```
+config lime network
+ option anygw_mac 'aa:aa:aa:%N1:%N2:aa'
+```
+
+Parametrizable con `%Nn`. Ten en cuenta que la regla `nftables` usará una máscara de `ff:ff:ff:00:00:00`.
+
+
+## batadv
+Consulta la [página de batman-adv](protocols/batman-adv) para la configuración predeterminada.
+
+::: tip NOTA
+El paquete `lime-proto-batadv` está incluido en el [`sabor por defecto`](/reference/flavors)
+:::
+
+### batadv_orig_interval
+- Tipo: `number` `ms`
+- Predeterminado: `2000`
+
+```
+config lime network
+ option batadv_orig_interval '2000'
+```
+
+BATMAN-adv enviará un paquete de mensaje Originator (OGM) cada 2000 ms (2 segundos).
+Este valor debería ser adecuado para redes estáticas, en las que los routers LibreMesh no se desplazan.
+Si tienes un nodo LibreMesh en movimiento (por ejemplo, en tu mochila), considera disminuir este valor.
+Un valor menor significa que BATMAN-adv tardará menos en determinar qué enlaces son mejores,
+pero generará más tráfico de fondo en todas las interfaces.
+
+### batadv_routing_algo
+- Tipo: `BATMAN_IV|BATMAN_V`
+- Predeterminado: `BATMAN_IV`
+
+```
+config lime network
+ option batadv_routing_algo 'BATMAN_IV'
+```
+
+BATMAN_V utiliza el throughput en lugar de la pérdida de paquetes (como en BATMAN_IV) para evaluar la calidad de un enlace.
+
+## bmx7
+
+### bmx7_mtu
+- Tipo: `number`
+- Predeterminado: `1500`
+
+```
+config lime network
+ option bmx7_mtu '1500'
+```
+Establece el MTU para las interfaces de túnel bmx7.
+
+### bmx7_publish_ownip
+- Tipo: `boolean`
+- Predeterminado: `false`
+
+```
+config lime network
+ option bmx7_publish_ownip false
+```
+Anuncia también una ruta /32 sobre cada nodo.
+
+
+### bmx7_over_batman
+- Tipo: `boolean`
+- Predeterminado: `false`
+
+```
+config lime network
+ option bmx7_over_batman false
+```
+
+### bmx7_pref_gw
+- Tipo: `string|none`
+- Predeterminado: `none`
+
+```
+config lime network
+ option bmx7_pref_gw none
+```
+
+Fuerza a bmx7 a usar un gateway específico hacia Internet (debe usarse el hostname como identificador).
+
+### bmx7_wifi_rate_max
+- Tipo: `number|auto`
+- Predeterminado: `auto`
+
+```
+config lime network
+ option bmx7_wifi_rate_max 'auto'
+```
+
+### bmx7_enable_pki
+- Tipo: `boolean`
+- Predeterminado: `false`
+
+```
+config lime network
+ option bmx7_enable_pki false
+```
+Confía solo en los nodos en /etc/bmx7/trustedNodes cuando está activado (el valor predeterminado es confiar en todos los nodos).
+
+
+## autoap - lime-ap-watchping
+
+### autoap_enabled
+Tipo: `boolean`
+Predeterminado: `0`
+Paquetes requeridos: `lime-ap-watchping`
+
+```
+config lime network
+ option autoap_enabled 0
+```
+Si está habilitado, el SSID del AP se cambia a ERROR cuando hay problemas de red.
+
+### autoap_hosts
+Tipo: `string`
+Predeterminado: `8.8.8.8 141.1.1.1`
+Paquetes requeridos: `lime-ap-watchping`
+
+```
+config lime network
+ option autoap_hosts "8.8.8.8 141.1.1.1"
+```
+Hosts utilizados para verificar si la red funciona correctamente.
+
+## odhcpd
+
+```
+config lime network
+ option use_odhcpd false
+```
+Opción para habilitar el uso de odhcpd como servidor dhcp.
+Habilítalo para tener un servidor dhcp al compilar libremesh sin `lime-proto-anygw`, que por defecto usa `dnsmasq-dhcpv6`.
diff --git a/docs/es/reference/network/protocols/babeld.md b/docs/es/reference/network/protocols/babeld.md
new file mode 100644
index 0000000..ed66b6d
--- /dev/null
+++ b/docs/es/reference/network/protocols/babeld.md
@@ -0,0 +1,94 @@
+---
+title: "Babeld"
+---
+# Babeld
+
+{width=200 height=200}
+
+## Referencia
+- [Babel en Wikipedia](https://en.wikipedia.org/wiki/Babel_(protocol))
+- Página de la wiki de OpenWrt para [Protocolo de enrutamiento Babel (babeld)](https://openwrt.org/docs/guide-user/services/babeld)
+- El [sitio web de Babel](https://www.irif.fr/~jch/software/babel/)
+
+## Opciones predeterminadas
+Configuración predeterminada almacenada en `/etc/config/babeld`.
+
+```
+config general 'general'
+ option local_port '30003'
+ option ubus_bindings 'true'
+
+config filter 'ula6'
+ option type 'redistribute'
+ option ip 'fc00::/7'
+ option action 'allow'
+
+config filter 'public6'
+ option type 'redistribute'
+ option ip '2000::0/3'
+ option action 'allow'
+
+config filter 'default6'
+ option type 'redistribute'
+ option ip '0::0/0'
+ option le '0'
+ option action 'allow'
+ option proto '7'
+
+config filter 'mesh4'
+ option type 'redistribute'
+ option ip '10.0.0.0/8'
+ option action 'allow'
+
+config filter 'mptp4'
+ option type 'redistribute'
+ option ip '172.16.0.0/12'
+ option action 'allow'
+
+config filter 'default4'
+ option type 'redistribute'
+ option ip '0.0.0.0/0'
+ option le '0'
+ option action 'allow'
+ option proto '7'
+
+config filter 'localdeny'
+ option type 'redistribute'
+ option local 'true'
+ option action 'deny'
+
+config filter 'denyany'
+ option type 'redistribute'
+ option action 'deny'
+
+```
+
+## Ejemplos
+
+---
+
+### ubus
+
+**listar comandos**
+```
+ubus -v list babeld
+'babeld' @98e57cc3
+ "add_interface":{"ifname":"String"}
+ "add_filter":{"ifname":"String","type":"Integer","metric":"Integer"}
+ "get_info":{}
+ "get_xroutes":{}
+ "get_routes":{}
+ "get_neighbours":{}
+```
+---
+
+**get_info**
+```
+ubus call babeld get_info
+{
+ "babeld_version": "babeld-1.13.1-ubus-mod",
+ "my_id": "22:05:b7:ff:fe:00:04:80",
+ "host": "openwrt"
+}
+
+```
diff --git a/docs/es/reference/network/protocols/batman-adv.md b/docs/es/reference/network/protocols/batman-adv.md
new file mode 100644
index 0000000..d24d764
--- /dev/null
+++ b/docs/es/reference/network/protocols/batman-adv.md
@@ -0,0 +1,53 @@
+---
+title: "Batman-adv"
+---
+# Batman-adv
+
+{width=250 height=200}
+
+## Referencia
+- [B.A.T.M.A.N. en Wikipedia](https://en.wikipedia.org/wiki/B.A.T.M.A.N.)
+- Página de la wiki de OpenWrt para [B.A.T.M.A.N. / batman-adv](https://openwrt.org/docs/guide-user/network/wifi/mesh/batman)
+- Página de la wiki de Open-Mesh para [B.A.T.M.A.N. advanced](https://www.open-mesh.org/projects/batman-adv/wiki/Wiki)
+
+## Opciones predeterminadas:
+- `routing_algo`: `BATMAN_IV`
+- `bridge_loop_avoidance`: `1`
+- `multicast_mode`: `0`
+- `batadv_orig_interval`: `2000`
+- `distributed_arp_table`: `0`
+- `gw_mode`: `client` - establece gw_mode=client en todas partes. Dado que no hay gw_mode=server, esto hace que bat0 nunca reenvíe solicitudes, por lo que un servidor DHCP rogue no afecta a toda la red (las solicitudes DHCP siempre se responden localmente)
+- Soporta `alfred` si está instalado, reemplazado por `shared-state`
+
+- Establece una dirección mac única para cada interfaz batman
+ Evita la inundación de dmesg causada por BLA con mensajes como "br-lan:
+ paquete recibido en bat0 con la propia dirección como origen".
+ Ajusta la dirección MAC para cada una de las interfaces utilizadas por Batman-adv
+ 00 + Unicast administrado localmente .. 2 bytes del nombre de la interfaz
+.. 3 bytes de la interfaz principal
+
+- establece el `mtu` para cada interfaz vlan a `1532`
+
+## Ejemplos
+
+### batctl
+
+---
+
+**obtener interfaces activas**
+```
+root@LiMe-ab46b8:~# batctl if
+eth0_270: active
+wlan0-mesh_270: active
+```
+
+---
+
+**obtener vecinos**
+```
+root@LiMe-ab46b8:~# batctl n
+[B.A.T.M.A.N. adv 2025.4-openwrt-2, MainIF/MAC: eth0_270/02:95:39:ab:46:b8 (bat0/76:ff:fb:da:33:92 BATMAN_IV)]
+IF Neighbor last-seen
+ wlan0-mesh_270 02:58:47:59:82:57 4.640s
+
+```
diff --git a/docs/es/reference/system.md b/docs/es/reference/system.md
new file mode 100644
index 0000000..68e6ab0
--- /dev/null
+++ b/docs/es/reference/system.md
@@ -0,0 +1,114 @@
+---
+outline: deep
+---
+
+# Opciones del sistema
+Los valores predeterminados según `lime-defaults`
+```
+config lime system
+ option hostname 'LiMe-%M4%M5%M6'
+ option domain 'thisnode.info'
+ option keep_on_upgrade 'libremesh dropbear minimum-essential /etc/sysupgrade.conf'
+ option root_password_policy 'DO_NOTHING'
+ option root_password_secret ''
+ option deferrable_reboot_uptime_s '97200'
+ option deferrable_reboot_ping_target '4.2.2.2'
+ option firstbootwizard_configured false
+ option firstbootwizard_dismissed false
+```
+
+## hostname
+- Predeterminado: `LiMe-%M4%M5%M6`
+- Parametrizable con `%Mn`
+
+```
+config lime system
+ option hostname 'LiMe-%M4%M5%M6'
+```
+
+El nombre de host del nodo
+
+## domain
+- Tipo: `string`
+- Predeterminado: `thisnode.info`
+
+```
+config lime system
+ option domain 'thisnode.info'
+```
+
+Dominio DNS para la nube L2, puede ser algo como `mynube.mired.tld`
+
+## keep_on_upgrade
+- Tipo: `list`
+- Predeterminado: `libremesh dropbear minimum-essential /etc/sysupgrade.conf`
+
+```
+config lime system
+ option keep_on_upgrade 'libremesh dropbear minimum-essential /etc/sysupgrade.conf'
+```
+
+Archivos que definen la lista de archivos y directorios a respaldar durante la actualización.
+La ruta del archivo es relativa al `/lib/upgrade/keep.d` predeterminado de OpenWrt si no se define `/`.
+Esta opción es utilizada por el comando `lime-sysupgrade` y por el paquete opcional `safe-upgrade`.
+
+Consulta la página [Actualización](/guide/upgrade) para obtener más detalles.
+
+## root_password_policy
+- Tipo: `DO_NOTHING | RANDOM | SET_SECRET`
+- Predeterminado: `DO_NOTHING`
+
+```
+config lime system
+ option root_password_policy 'DO_NOTHING'
+```
+
+Determina la configuración de lime para la contraseña root:
+- `DO_NOTHING` - deja la contraseña root vacía (tendrás que establecerla manualmente o a través de FirstBootWizard).
+- `RANDOM` - se establecerá una contraseña aleatoria segura si root no tiene contraseña, usa esto si tu firmware se construye con claves ssh internas.
+- `SET_SECRET` - la contraseña root se configurará según lo especificado en root_password_secret.
+
+La opción predeterminada evita que libremesh sobrescriba la configuración manual, por ejemplo, a través de `luci`, `uci` o `lime-app`.
+
+## root_password_secret
+- Tipo: `string`
+- Predeterminado: `''`
+
+```
+config lime system
+ option root_password_secret ''
+```
+
+Se usa solo cuando `root_password_policy` está configurado como `SET_SECRET`.
+El hash de la contraseña se almacenará en /etc/shadow.
+Usa una contraseña segura con al menos 10 números y letras, ¡cuanto más larga mejor!.
+
+```
+openssl passwd -5
+```
+
+Puedes generar el secreto con `openssl passwd -1` para ser compatible con la mayoría de los firmwares OpenWrt.
+Para mayor seguridad, usa `openssl passwd -6` para SHA512 (o -5 para SHA256), pero ten en cuenta que no todos los firmwares lo soportan.
+
+## firstbootwizard_configured
+- Tipo: `string`
+- Predeterminado: `false`
+- Paquetes requeridos: `first-boot-wizard`
+
+```
+config lime system
+ option firstbootwizard_configured false
+```
+Cuando es true, el asistente de primer arranque no aparecerá por defecto.
+
+## firstbootwizard_dismissed
+- Tipo: `string`
+- Predeterminado: `false`
+- Paquetes requeridos: `first-boot-wizard`
+
+```
+config lime system
+ option firstbootwizard_dismissed false
+```
+
+Cuando es true, el banner del asistente de primer arranque estará oculto.
diff --git a/docs/es/reference/wifi/band-specific.md b/docs/es/reference/wifi/band-specific.md
new file mode 100644
index 0000000..81233b1
--- /dev/null
+++ b/docs/es/reference/wifi/band-specific.md
@@ -0,0 +1,76 @@
+---
+title: "Opciones específicas de banda WiFi"
+---
+# Opciones específicas de banda WiFi
+
+## Valores predeterminados
+```
+config lime-wifi-band '2ghz'
+ option channel '11'
+ option htmode 'HT20'
+ option distance '1000'
+ option adhoc_mcast_rate '24000'
+ option ieee80211s_mcast_rate '24000'
+
+config lime-wifi-band '5ghz'
+ list channel '48'
+ list channel '157'
+ option htmode 'HT40'
+ option distance '10000'
+ option adhoc_mcast_rate '6000'
+ option ieee80211s_mcast_rate '6000'
+```
+
+## 2ghz
+Configura todos los radios a 2ghz agregando una sección `config lime-wifi-band '2ghz'` en `lime-node`
+Los ajustes de esta sección se aplican a todos los radios de la banda `2ghz` (o `5ghz`). Y tienen prioridad sobre la sección `config lime wifi`.
+```
+config lime-wifi-band '2ghz'
+ option channel '11'
+ option htmode 'HT20'
+ option distance '1000'
+ option adhoc_mcast_rate '24000'
+ option ieee80211s_mcast_rate '24000'
+```
+
+- `htmode 'HT20'` - htmode establece el ancho del canal. HT40 debería tener un mejor rendimiento en entornos no ruidosos.
+ Consulta la wiki de OpenWrt: https://openwrt.org/docs/guide-user/network/wifi/basic#htmodewi-fi_channel_width
+- `distance '1000'` # 1 km de distancia máxima, clientes o pares más lejanos no podrán conectarse
+
+## 5ghz
+```
+config lime-wifi-band '5ghz'
+ list channel '48'
+ list channel '157'
+ option htmode 'HT40'
+ option distance '10000'
+ option adhoc_mcast_rate '6000'
+ option ieee80211s_mcast_rate '6000'
+
+```
+
+- `channel 48` - Puede ser una lista o una opción única, en caso de ser una lista, se seleccionará un canal para cada radio según el índice del radio
+Consulta los canales permitidos en https://en.wikipedia.org/wiki/List_of_WLAN_channels#regulatory_tables5.0ghz
+- `distance '10000'` - Distancia entre este nodo/ap y el nodo/cliente más alejado en metros, afecta el rendimiento.
+Si no estás seguro del número correcto, es mejor usar una distancia demasiado grande aquí que una demasiado pequeña.
+Clientes o pares más alejados no podrán conectarse
+- `htmode 'HT40'` - htmode establece el ancho del canal. VHT80 debería tener un mejor rendimiento en entornos no ruidosos.
+Consulta la lista de canales válidos en este comentario: https://github.com/libremesh/lime-packages/issues/647#issuecomment-1503968192
+y la wiki de OpenWrt [htmode: Ancho de canal Wi-Fi](https://openwrt.org/docs/guide-user/network/wifi/basic#htmodewi-fi_channel_width)
+
+
+## Ejemplos
+
+### Banda dual
+Para redes donde solo se usan routers de banda dual:
+- el radio de 5GHz se puede reservar para las conexiones entre nodos.
+- los radios de 2.4Ghz se pueden reservar para puntos de acceso.
+
+```
+config lime-wifi-band '5ghz'
+ list modes 'ieee80211s'
+
+config lime-wifi-band '2ghz'
+ list modes 'ap'
+ list modes 'apname'
+```
diff --git a/docs/es/reference/wifi/index.md b/docs/es/reference/wifi/index.md
new file mode 100644
index 0000000..63fa1a2
--- /dev/null
+++ b/docs/es/reference/wifi/index.md
@@ -0,0 +1,112 @@
+---
+title: "Opciones WiFi"
+---
+# Opciones WiFi
+La configuración de cada dispositivo de radio se calcula a partir de:
+- las **opciones generales** en `config lime wifi`
+- la correspondiente **sección específica de banda** para `2ghz` y `5ghz` también incluida en `lime-defaults`
+- una **sección específica de interfaz** opcional relativa a ese dispositivo de radio en particular.
+
+## Valores predeterminados
+Los valores predeterminados según `lime-defaults`
+
+```
+config lime wifi
+ list modes 'ap'
+ list modes 'apname'
+ list modes 'ieee80211s'
+ option ap_ssid 'LibreMesh.org'
+ option apname_ssid 'LibreMesh.org/%H'
+ option adhoc_ssid 'LiMe'
+ option adhoc_bssid 'ca:fe:00:c0:ff:ee'
+ option apup_ssid 'LibreMesh.org'
+ option ieee80211s_mesh_fwding '0'
+ option ieee80211s_mesh_nolearn '1'
+ option ieee80211s_mesh_id 'LiMe'
+ option unstuck_interval '10'
+ option unstuck_timeout '300'
+
+config lime-wifi-band '2ghz'
+ option channel '11'
+ option htmode 'HT20'
+ option distance '1000'
+ option adhoc_mcast_rate '24000'
+ option ieee80211s_mcast_rate '24000'
+
+config lime-wifi-band '5ghz'
+ list channel '48'
+ list channel '157'
+ option htmode 'HT40'
+ option distance '10000'
+ option adhoc_mcast_rate '6000'
+ option ieee80211s_mcast_rate '6000'
+```
+
+## Opciones generales
+Los ajustes en la sección `config lime wifi` se aplican a **todos los radios**.
+
+Las configuraciones de LibreMesh en las secciones `wifi` `lime-wifi-band` y las específicas `radioN` contienen opciones para configurar:
+- **opciones del dispositivo de radio** como `channel`, `distance`, `htmode` y `txpower`
+- **opciones de la interfaz wifi** para Puntos de Acceso, como `ap_ssid`, `ap_key`, `ap_encryption`, u otros modos compatibles como 80211s o cliente.
+- **opciones de red**, la lista de protocolos y opciones se heredan de la sección de red predeterminada `config lime 'network'`
+
+### ap_ssid
+- Tipo: `string`
+- Predeterminado: `LibreMesh.org`
+
+```
+config lime wifi
+ option ap_ssid 'LibreMesh.org'
+```
+
+Establece aquí el nombre de tu red, **este valor es requerido incluso si no se usa el AP**, ya que se utiliza para calcular campos con %Nn.
+
+
+### country
+- Tipo: código de país
+- Predeterminado: sin establecer, usa `00` (Mundial) por defecto
+
+Establece esto al código de país de tu ubicación, por ejemplo en España, establecer `ES` te permite usar el canal 13
+
+### modes
+- `adhoc` - Consulta la configuración adhoc más abajo
+- `ap` - Este modo configura un Punto de Acceso, con el mismo ssid en cada nodo para roaming.
+- `apbb` - AP de backbone, para conexión de otros routers LibreMesh en lugar de usuarios
+- `apname` - Este modo configura un Punto de Acceso, con un ssid específico para cada nodo.
+- `apup` - Este modo configura el radio para operación APuP.
+- `client` - la configuración del cliente debe hacerse en [Opciones específicas Wi-Fi](./interface-specific.html#modo-cliente-wifi)
+- `ieee80211s` - Usado para enlaces mesh entre nodos.
+
+#### opciones de modes
+Consulta la siguiente página [Modos WiFi](./modes) para detalles sobre las opciones de `Access Points`, `Adhoc`, `APuP` y `802.11s`.
+
+## Solución para radios sordos
+::: warning Advertencia ath9k
+
+Los routers con radios Atheros y el controlador ath9k tienen un fallo conocido que hace que se queden sordos,
+si usas una versión de OpenWrt anterior a la 24.10.6 asegúrate de incluir el paquete libremesh `wifi-unstuck-wa`
+:::
+
+### unstuck_interval
+- Predeterminado: `10`
+- Paquetes requeridos: `wifi-unstuck-wa`
+
+```
+config lime 'wifi'
+ option unstuck_interval '10'
+```
+
+Intervalo en minutos que define la frecuencia con la que se ejecuta el script de solución alternativa proporcionado por el paquete `wifi-unstuck-wa`
+que reescanea todas las frecuencias en los radios activos.
+
+
+### unstuck_timeout
+- Predeterminado: `10`
+- Paquetes requeridos: `wifi-unstuck-wa`
+
+```
+config lime 'wifi'
+ option unstuck_interval '10'
+```
+
+Tiempo de espera en segundos que define la duración de la solución alternativa mencionada anteriormente.
diff --git a/docs/es/reference/wifi/interface-specific.md b/docs/es/reference/wifi/interface-specific.md
new file mode 100644
index 0000000..bce8f19
--- /dev/null
+++ b/docs/es/reference/wifi/interface-specific.md
@@ -0,0 +1,151 @@
+---
+outline: deep
+---
+
+# Opciones específicas de interfaz WiFi
+Las siguientes opciones deben editarse en `lime-node` o `lime-`
+
+## Configurar un solo radio
+Asegúrate de que el nombre del radio elegido exista, es decir, ejecutando el comando `wifi status`, probablemente `radio0` o `radio1`.
+
+```
+config wifi radio0
+ ...
+```
+Todas las **opciones no especificadas** se tomarán de `config lime-wifi-band` y las secciones generales `config lime wifi`.
+
+## Ejemplos
+
+### Modo cliente WiFi
+Si quieres usar el modo cliente WiFi solo para conectarte a un AP que ofrezca Internet, necesitas dos piezas de configuración:
+la configuración específica de wifi y la de red.
+
+Si tu router tiene un puerto ethernet WAN, necesitarás también la tercera pieza de configuración para deshabilitar la interfaz creada por defecto por `lime-hwd-openwrt-wan`.
+
+Configura radio99 como cliente de un punto de acceso para acceso a Internet
+```
+config wifi radio99
+ list modes 'client'
+ option channel 'auto'
+ option client_ssid 'SomeWiFiNetwork'
+ option client_key 'SomeWPApskPassword'
+ option client_encryption 'psk2'
+ option distance 1000
+
+config net wirelessclientWAN
+ option linux_name 'wlan0-sta'
+ list protocols 'wan'
+
+config net lm_hwd_openwrt_wan
+ option autogenerated 'false'
+```
+
+Opciones para `wireless.radio99`:
+- `client_encryption 'psk2'` - psk para WPA o psk2 para WPA2
+- `distance 1000` - Distancia máxima al AP, afecta el rendimiento
+
+Opciones para `network.wirelessclientWAN`:
+- `linux_name 'wlan0-sta'` - Verifica el nombre, el nombre de la interfaz cliente puede ser diferente, como wlan1-sta
+- `protocols 'wan'` - Usa `wan` para obtener conectividad a Internet vía DHCP.
+ Usa `static` para asignar manualmente direcciones ipv4/ipv6, consulta [Protocolo static](/reference/network/protocols-list#static).
+
+
+### Usar solo para malla
+```
+config wifi radio99
+ list modes 'ieee80211s'
+```
+
+### Cambiar SSID
+```
+config wifi radio99
+ option ap_ssid 'Special'
+```
+### Cambiar el canal
+```
+config wifi radio99
+ option channel '1'
+```
+
+### Deshabilitar lime-config
+```
+config wifi radio99
+ option modes 'manual'
+```
+Si usas el protocolo manual no debes especificar otro protocolo, o tu configuración se romperá.
+
+### Disminuir la potencia de salida
+Esto rara vez es una buena idea, hazlo solo si estás muy seguro de lo que estás haciendo.
+Ten en cuenta que disminuir la potencia de salida puede crear un "problema de nodo oculto", consulta https://en.wikipedia.org/wiki/Hidden_node_problem
+```
+config wifi radio99
+ option txpower '14'
+```
+Para conocer el txpower actual, usa el comando `iwinfo`.
+
+### Modo Adhoc
+```
+config wifi radio99
+ list modes 'adhoc'
+ option channel '1'
+ option adhoc_ssid 'LiMe'
+ option adhoc_bssid 'ca:fe:00:c0:ff:ee'
+ option adhoc_mcast_rate '24000'
+```
+
+`adhoc_ssid` - Parametrizable con %M, %H
+
+### AP backbone WiFi
+Si quieres usar cliente WiFi y AP en lugar de malla para construir el
+backbone de tu red LibreMesh (y estás usando Batman-adv + Babeld)
+necesitarás configuración wifi y de red tanto en el cliente como en el punto de acceso
+
+Configura radio99 como punto de acceso del backbone
+apbb significa backbone AP, para conexión de otros routers LibreMesh en lugar de conexión de usuarios
+parte de la estructura de la red LibreMesh usando Batman-adv y Babeld, las siguientes secciones "wifi" y "net" son requeridas en el AP
+```
+config wifi radio99
+ list modes 'apbb'
+ option apbb_ssid 'backbone/%H'
+# option apbb_key 'somePassword'
+# option apbb_encryption 'psk2'
+
+config net wirelessAPbackbone
+ option linux_name 'wlan0-apbb'
+ list protocols 'apbb'
+ list protocols 'babeld:17'
+ list protocols 'batadv:%N1'
+```
+
+`list modes 'ap'`, `list modes 'apname'` - Incluye esto si además quieres un AP para clientes en el mismo radio.
+`list modes 'ieee80211s'` - Incluye esto si además quieres hacer malla IEEE802.11s en el mismo radio, verifica el número máximo de "combinaciones de interfaces" con el comando `iw phy phy0 info`.
+`option apbb_ssid 'backbone/%H'` - Los clientes no deben conectarse a este AP, el nombre del SSID debe indicarlo.
+
+`option linux_name 'wlan0-apbb'` - Verifica el nombre, el nombre de la interfaz AP del backbone puede ser diferente, como wlan1-apbb.
+`list protocols 'apbb'` - Protocolo AP backbone, necesario para configurar la interfaz
+
+### Cliente backbone WiFi
+Configura radio0 como cliente backbone de un punto de acceso backbone
+(no para conexión de usuarios, se reporta la configuración específica del AP más arriba)
+usando Batman-adv y Babeld, las siguientes secciones "wifi" y "net" son requeridas en el cliente
+
+```
+config wifi radio99
+ list modes 'client'
+ option channel '11'
+ option client_ssid 'backbone/LiMe-ddeeff'
+# option client_key 'somePassword'
+# option client_encryption 'psk2'
+ option distance 1000
+
+config net wirelessclientbackbone
+ option linux_name 'wlan0-sta'
+ list protocols 'client'
+ list protocols 'babeld:17'
+ list protocols 'batadv:%N1'
+```
+
+`option client_ssid 'backbone/LiMe-ddeeff'` - Especifica el nombre de la interfaz AP backbone específicamente configurada a la que quieres conectarte
+
+`option linux_name 'wlan0-sta'` - Verifica el nombre, el nombre de la interfaz cliente puede ser diferente, como wlan1-sta.
+`list protocols 'client'` - Necesario para configurar la nueva interfaz
diff --git a/docs/es/reference/wifi/modes.md b/docs/es/reference/wifi/modes.md
new file mode 100644
index 0000000..24eaa5e
--- /dev/null
+++ b/docs/es/reference/wifi/modes.md
@@ -0,0 +1,87 @@
+---
+title: "Modos WiFi"
+---
+# Modos WiFi
+
+## Puntos de acceso
+
+### SSID
+
+#### ap_ssid
+- Tipo: `string`
+- Predeterminado: `LibreMesh.org`
+
+```
+config lime wifi
+ option ap_ssid 'LibreMesh.org'
+```
+
+Establece aquí el nombre de tu red, **este valor es requerido incluso si el AP no se usa**, ya que se utiliza para calcular campos con %Nn.
+
+#### apname_ssid
+- Tipo: `string`
+- Predeterminado: `LibreMesh.org/%H`
+
+```
+config lime wifi
+ option ap_ssid 'LibreMesh.org/%H'
+```
+SSID específico para cada AP. Un usuario puede conectarse al AP con nombre para evitar el roaming.
+
+#### apbb_ssid
+- Tipo: `string`
+- Predeterminado: sin establecer
+
+```
+config lime wifi
+ option apbb_ssid 'backbone/%H'
+```
+
+### clave y cifrado
+
+## Punto de acceso Ad-Hoc
+
+```
+config lime 'wifi'
+ list modes 'adhoc'
+ option adhoc_ssid 'LiMe'
+ option adhoc_bssid 'ca:fe:00:c0:ff:ee'
+```
+
+- `adhoc_ssid 'LiMe'` - SSID de los APs (nodos) al hacer malla en modo ad-hoc, es decir, los nodos forman un IBSS. No se usa al hacer malla en 802.11s (el predeterminado)
+
+
+## Punto de acceso APuP
+Consulta el artículo en el blog de FreiFunk sobre [Una nueva forma de hacer malla – APuP](https://blog.freifunk.net/2024/08/24/a-new-way-to-mesh-apup/)
+
+```
+config lime 'wifi'
+ list modes 'apup'
+ option apup_ssid 'LibreMesh.org'
+```
+
+- `apup_ssid 'LibreMesh.org'` - Establece aquí el nombre de tu red basada en APuP
+
+## 802.11s
+```
+config lime 'wifi'
+ list modes 'ieee80211s'
+ option ieee80211s_mesh_fwding '0'
+ option ieee80211s_mesh_nolearn '1'
+ option ieee80211s_mesh_id 'LiMe'
+# option ieee80211s_key 'SomePsk2AESKey'
+# option ieee80211s_encryption 'psk2/aes'
+```
+### clave y cifrado
+Si planeas usar malla cifrada, debes asegurarte de tener el paquete `wpad-mesh-*`, no `wpad-basic-*`, donde `*` es `mbedtls`, `openssl` o `wolfssl`. OpenWrt 23 usa `mbedtls` de forma predeterminada. Por ejemplo, en ImageBuilder agrega
+
+```
+-wpad-basic-mbedtls wpad-mesh-mbedtls
+```
+
+### mesh_params
+Parámetros de malla compatibles
+- `ieee80211s_mesh_id 'LiMe'` - Identificador de la nube mesh (similar al SSID en concepto). Usado por los nodos para unirse y participar en la red mesh.
+- `ieee80211s_mesh_fwding '0'` - Ajustes necesarios solo para 802.11s
+- `ieee80211s_mesh_nolearn '1'` - Deshabilita las capacidades de enrutamiento mesh multihop de 802.11s
+- `ieee80211s_mcast_rate` - se ajusta en **opciones específicas de banda** con `24000` para `2ghz` y `6000` para `5ghz`
diff --git a/docs/es/resources/media_list.md b/docs/es/resources/media_list.md
new file mode 100644
index 0000000..6567777
--- /dev/null
+++ b/docs/es/resources/media_list.md
@@ -0,0 +1,8 @@
+---
+title: "Lista de medios"
+---
+# Lista de medios
+
+Una lista no exhaustiva de medios sobre LibreMesh incluye presentaciones o discusiones en audio/video y artículos técnicos.
+
+Videos recientes en el [canal PeerTube de LibreMesh](https://media.exo.cat/@libremesh)
diff --git a/docs/es/resources/related_projects.md b/docs/es/resources/related_projects.md
new file mode 100644
index 0000000..7d950b8
--- /dev/null
+++ b/docs/es/resources/related_projects.md
@@ -0,0 +1,12 @@
+---
+title: "Proyectos relacionados"
+---
+# Proyectos relacionados
+
+## [Gluon](https://gluon.readthedocs.io/)
+
+[https://github.com/freifunk-gluon/gluon](https://github.com/freifunk-gluon/gluon)
+
+## [LibreRouter](https://altermundi.net/documentation/setting-up-a-librerouter-node/)
+
+[https://gitlab.com/librerouter](https://gitlab.com/librerouter)
diff --git a/docs/es/resources/tools/monitoring.md b/docs/es/resources/tools/monitoring.md
new file mode 100644
index 0000000..7f0945c
--- /dev/null
+++ b/docs/es/resources/tools/monitoring.md
@@ -0,0 +1,8 @@
+---
+title: "Monitoreo"
+---
+# Monitoreo
+
+El monitoreo de nodos LibreMesh se puede realizar de varias maneras.
+
+Algunos ejemplos de comunidades que utilizan LibreMesh
\ No newline at end of file
diff --git a/docs/es/what-is-libremesh.md b/docs/es/what-is-libremesh.md
new file mode 100644
index 0000000..7ad793f
--- /dev/null
+++ b/docs/es/what-is-libremesh.md
@@ -0,0 +1,117 @@
+---
+outline: deep
+---
+
+# ¿Qué es LibreMesh?
+
+## Objetivos a alcanzar
+
+ - Permitir a usuarios no expertos montar una red mesh y realizar la configuración y gestión básicas desde una interfaz web usable en el teléfono móvil
+ - Animar a los usuarios no expertos a profundizar en su comprensión técnica de las redes mesh
+ - Escalabilidad
+ - Segmentación de red
+ - Roaming en capa 2 dentro de ciertas áreas
+ - Selección inteligente de gateway con redundancia y posibilidad de elección por el usuario
+ - Compatibilidad con muchos escenarios distintos
+ - Una única imagen de firmware para todos los routers de tu red
+
+## Lo básico
+
+La arquitectura de red diseñada para LibreMesh se basa en dos capas:
+
+### Capa 2 en la nube
+::: info La capa 2 en la nube usa el protocolo de enrutamiento dinámico [BATMAN-adv](https://en.wikipedia.org/wiki/B.A.T.M.A.N.).
+
+{width=250 height=200}
+
+***
+B.A.T.M.A.N. Advanced es un protocolo de enrutamiento mesh que se ejecuta en el espacio del kernel.
+Aunque la topología de la red esté formada por múltiples nodos y múltiples saltos, B.A.T.M.A.N. Advanced la abstrae como un único dominio de difusión en capa 2.
+De este modo, desde el punto de vista del usuario, toda la mesh se ve como una sola LAN.
+Esta arquitectura es robusta para el roaming, por lo que las conexiones TCP y UDP no se pierden al moverse entre puntos de acceso.
+***
+:::
+
+### Capa 3 de red
+::: info Toda la capa 3 de la red usa por defecto el protocolo de enrutamiento [Babel](https://en.wikipedia.org/wiki/Babel_(protocol)).
+{width=200 height=200}
+
+***
+Babel es un protocolo de enrutamiento robusto y eficiente tanto para redes mesh inalámbricas como cableadas
+***
+:::
+
+### Mezclando capas
+
+Por defecto, todos los nodos ejecutan ambos protocolos de enrutamiento (Babel y BATMAN-adv), pero en VLANs distintas.footnote:[LAN virtual aislada, por ejemplo wlan0.13].
+
+::: tip NOTA
+La VLAN de Babel es siempre la misma, así que todos los nodos conectados a nivel de enlace se ven entre sí.
+La VLAN de BATMAN-adv depende del identificador de la nube, que se calcula (por defecto) a partir del hash del SSID del AP.
+
+La red Babel será una única red para toda la mesh, pero la red BATMAN-adv puede estar separada entre distintas nubes locales.
+:::
+
+
+
+**Esta configuración aísla las nubes de capa 2**.
+Por ejemplo, un barrio, un complejo de oficinas o una red de hotspots a nivel de calle pueden elegir aislar su LAN del resto de la red.
+Al mismo tiempo, podrán alcanzar el resto de los nodos usando la red enrutada de capa 3.
+
+El roaming estará disponible dentro de la nube, por lo que las sesiones TCP, el streaming de vídeo o incluso una llamada SIP se pueden mantener mientras te mueves.
+Por otro lado, gracias a la segmentación de capa 3, los problemas habituales de una red puenteada en capa 2 —como tormentas de broadcast o pesadillas de DHCP—
+no afectarán al correcto funcionamiento de la red.
+
+::: tip
+Todo es automático y transparente para el usuario final.
+:::
+
+
+
+
+## Los detalles
+
+Los puntos de acceso WiFi de la misma nube comparten parámetros comunes:
+
+* El SSID (el nombre identificador del AP WiFi)
+* Direcciones IPv4 e IPv6 anycast especiales.footnote:[IP compartida por varios dispositivos en la red]
+* Una dirección MAC anycast especial
+* El servidor DHCP/RA que proporciona IPs válidas desde la nube a los clientes.
+
+Así, un cliente conectado a un AP puede moverse por la mesh sin necesidad de renovar su configuración IP.
+Incluso la capa MAC será la misma desde su punto de vista.
+
+
+
+::: tip
+El archivo de concesiones DHCP se comparte entre la nube para evitar colisiones usando
+[shared-state](https://github.com/libremesh/shared-state-async)
+
+Mientras todos los nodos compartan el mismo MAC/IP anycast, desde el punto de vista del cliente es totalmente transparente.
+El gateway siempre es el mismo aunque el nodo mesh (al que está conectado) cambie.
+:::
+
+
+
+Cuando un cliente quiere salir de la LAN (nube) para llegar a Internet o a cualquier otra red,
+enviará los paquetes a la dirección anycast especial del gateway. El nodo al que el cliente
+está físicamente conectado se encargará de esto.
+
+::: tip
+Una regla de nftables en el bridge LAN/AP evita que los paquetes enviados a la dirección anycast
+se propaguen por la nube.
+El nodo mesh al que está asociado el cliente recibe el paquete, pero los demás no.
+:::
+
+
+
+El paquete se enruta a través de la red Babel de capa 3 hasta el gateway de Internet más cercano.
+Puede ser un nodo de la misma nube o cualquier otro de una nube lejana.
+
+
+
+
+## Diagramas
+
+- Listado de diagramas de todas las interfaces de red creadas en LibreMesh ejecutándose en un router **OpenWrt One**.
+[](/diagrams/libremesh-interfaces-openwrt-one)
diff --git a/docs/pt-BR/build/buildroot.md b/docs/pt-BR/build/buildroot.md
new file mode 100644
index 0000000..501bb1d
--- /dev/null
+++ b/docs/pt-BR/build/buildroot.md
@@ -0,0 +1,274 @@
+---
+aside: false
+---
+
+
+
+# Buildroot
+
+[[toc]]
+
+## Configuração do sistema de compilação
+Consulte a wiki do OpenWrt [Configuração do sistema de compilação](https://openwrt.org/docs/guide-developer/toolchain/install-buildsystem)
+para a lista de pacotes de outras distribuições Linux.
+
+### Debian/Ubuntu/Mint
+```sh
+sudo apt update
+sudo apt install build-essential clang flex bison g++ gawk \
+gcc-multilib g++-multilib gettext git libncurses-dev libssl-dev \
+rsync swig unzip zlib1g-dev file wget bzip2
+```
+
+## Download
+
+### Clonar o código fonte do OpenWrt
+Consulte a wiki do OpenWrt [Uso do sistema de compilação](https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem).
+Execute todos os comandos acima como usuário normal (não use root).
+
+::: code-group
+
+```sh-vue [{{ openwrt.stable_version }}]
+git clone -b v{{ openwrt.stable_version }} --single-branch https://github.com/openwrt/openwrt
+cd openwrt
+```
+
+```sh-vue [{{ openwrt.oldstable_version }}]
+git clone -b v{{ openwrt.oldstable_version }} --single-branch https://github.com/openwrt/openwrt
+cd openwrt
+```
+
+:::
+
+### Adicionar os feeds do LibreMesh
+Copie o arquivo de repositórios padrão do OpenWrt e adicione os repositórios do LibreMesh
+
+::: tip
+Use `master` para compilar o código mais recente do LibreMesh (compatível com openwrt-24.10 ou mais recente)
+Use `2024.1` para compilar a versão mais recente do LibreMesh (compatível com openwrt-24.10 e openwrt-23.05)
+:::
+
+::: code-group
+
+```sh [master]
+cp feeds.conf.default feeds.conf
+cat << EOF >> feeds.conf
+src-git libremesh https://github.com/libremesh/lime-packages.git;master
+src-git profiles https://github.com/libremesh/network-profiles.git
+EOF
+```
+
+```sh [2024.1]
+cp feeds.conf.default feeds.conf
+cat << EOF >> feeds.conf
+src-git libremesh https://github.com/libremesh/lime-packages.git;v2024.1
+src-git profiles https://github.com/libremesh/network-profiles.git
+EOF
+```
+
+:::
+
+
+### Baixar e instalar pacotes dos feeds
+```sh
+scripts/feeds update -a
+scripts/feeds install -a
+```
+
+
+## Configuração
+
+### Usando menuconfig
+```
+make menuconfig
+```
+
+
+
+Consulte o `target`, `subtarget` e `profile` do seu roteador na [Tabela de Hardware do OpenWrt](https://toh.openwrt.org).
+
+Selecione então:
+- `Target System` - padrão `Mediatek ARM`
+- `Subtarget` - padrão `Filogic`
+- `Target Profile` - padrão `OpenWrt One`
+
+#### Seleção de pacotes
+
+##### Pacotes padrão
+**Desselecione** pacotes conflitantes:
+
+- `Sistema base` -> `< >` `dnsmasq`
+- `Rede` -> `< >` `odhcpd-ipv6only`
+
+Por padrão, o LibreMesh usa `dnsmasq-dhcpv6` em vez do `dnsmasq` padrão do OpenWrt e `odhcpd-ipv6only`.
+
+**Desselecione** localizações de feeds errôneas:
+
+- `Configuração da imagem` -> `Repositórios de feeds separados` -> `< >` `Habilitar feed libremesh`
+- `Configuração da imagem` -> `Repositórios de feeds separados` -> `< >` `Habilitar feed profiles`
+
+Os pacotes do OpenWrt estão disponíveis no servidor de downloads https://downloads.openwrt.org.
+Remova os repositórios do LibreMesh desta lista, pois pacotes pré-compilados não estarão disponíveis lá.
+Pacotes pré-compilados do LibreMesh estão disponíveis em https://feed.libremesh.org/.
+Estes são instaláveis:
+- diretamente no roteador através do gerenciador de pacotes
+- via ImageBuilder durante a geração do firmware
+
+##### Economizando espaço e RAM
+
+Opcionalmente, **desselecione** pacotes não utilizados:
+- `Rede` -> `< >` `ppp`
+- `Rede` -> `< >` `ppp-mod-pppoe`
+- `Módulos do Kernel` -> `Suporte de Rede` -> `< >` `kmod-ppp`
+- `Módulos do Kernel` -> `Suporte de Rede` -> `< >` `kmod-pppoe`
+- `Módulos do Kernel` -> `Suporte de Rede` -> `< >` `kmod-pppox`
+
+Consulte [Seleção de pacotes](../guide/packages-selection#saving-space-and-ram) para uma lista de outros pacotes opcionalmente desselecionáveis.
+
+##### Pacotes LibreMesh
+**Selecione** (pressione espaço até que apareça um asterisco, como `<*>`) os pacotes LibreMesh:
+
+
+
+* `LibreMesh` → `Documentação offline` → `<*>` `lime-docs-minimal` (documentação mínima do LibreMesh)
+* `LibreMesh` → `<*>` `lime-app` (LimeApp) **(opcional)**
+* `LibreMesh` → `<*>` `lime-hwd-openwrt-wan` (Respeitar a interface wan do openwrt como padrão)
+* `LibreMesh` → `<*>` `lime-proto-anygw` (Suporte ao protocolo anygw do LibreMesh)
+* `LibreMesh` → `<*>` `lime-proto-babeld` (Suporte ao protocolo babeld do LibreMesh)
+* `LibreMesh` → `<*>` `lime-proto-batadv` (Suporte ao protocolo batman-adv do LibreMesh)
+* `LibreMesh` → `<*>` `shared-state`
+* `LibreMesh` → `<*>` `shared-state-async` **(opcional)**
+ * `<*>` `shared-state-babeld_hosts` (módulo babeld-hosts para shared-state)
+ * `<*>` `shared-state-bat_hosts` (módulo bat-hosts para shared-state) **(opcional)**
+ * `<*>` `shared-state-nodes_and_links` (módulo nodes_and_links para shared-state)
+* `LibreMesh` -> `<*>` `babeld-auto-gw-mode`
+* `LibreMesh` -> `<*>` `check-date-http` (Manter a data local não muito distante do desvio NTP) **(opcional)**
+* `LibreMesh` -> `<*>` `Documentação offline` -> `lime-docs` (documentação completa do LibreMesh) **(opcional)**
+* `LibreMesh` -> `<*>` `lime-debug` (ferramentas de debug do libremesh) **(opcional)**
+
+Os **pacotes opcionais** são recomendados, mas não obrigatórios, para uma rede LibreMesh funcional.
+Considere evitar selecionar esses pacotes `apenas` se a imagem criada for muito grande e não couber na memória do roteador.
+
+Adicionalmente e de forma opcional, httpS para a interface web pode ser habilitado selecionando (tenha cuidado que a interface web será exibida como *não confiável*):
+
+- `Utilitários` -> `Criptografia` -> `<*>` `px5g-standalone`
+
+Se você planeja usar malha 802.11s criptografada, precisa garantir que tenha o pacote `wpad-mesh-*`, não `wpad-basic-*`, onde `*` é `mbedtls`, `openssl` ou `wolfssl`. O OpenWrt desde a branch 23.05 usa `mbedtls` por padrão.
+- `Rede` -> `WirelessAPD` -> `< >` `wpad-basic-mbedtls`
+- `Rede` -> `WirelessAPD` -> `<*>` `wpad-mesh-mbedtls`
+
+::: tip NOTA
+Para ter pacotes adicionais, a maneira mais fácil é selecioná-los no menuconfig. Mais pacotes podem ser instalados posteriormente via `apk` ou o mais antigo `opkg`, mas alguns exigem uma configuração específica do kernel para estar em vigor. Isso pode ser conseguido seguindo [essas instruções adicionais sobre kernel vermagic](../development/hacking/kernel_vermagic.md) Esteja ciente de que isso aumentará notavelmente o tempo e o espaço de armazenamento necessários para a compilação.
+:::
+
+#### Salvar a configuração
+Salve a configuração e saia.
+
+#### Arquivos adicionais
+
+Nesta etapa, há a possibilidade de incluir arquivos personalizados na imagem do firmware compilada. Para isso, você terá que criar, dentro do diretório `openwrt/`, um diretório `files/` contendo a estrutura de diretórios e os arquivos que deseja adicionar. Por exemplo, se quiser ter um arquivo `/etc/config/lime-community`, você deve fazer o seguinte:
+
+``` sh
+mkdir -p files/etc/config/
+touch files/etc/config/lime-community
+```
+
+e depois editar o arquivo `lime-community` recém-criado incluindo seu conteúdo personalizado. Se um arquivo de um pacote tiver o mesmo nome e caminho que um arquivo neste diretório, ele será sobrescrito. Esta é uma maneira rápida de incluir um arquivo de configuração personalizado, sem a necessidade de criar um [perfil de rede](../guide/network-profiles) online.
+
+
+##### Perfis de Rede
+Se sua comunidade local tiver um perfil no [repositório de perfis de rede](https://github.com/libremesh/network-profiles/), você pode selecioná-lo em:
+
+- LibreMesh -> perfil-de-rede -> perfil-sua_comunidade-seu_perfil
+
+
+
+::: tip NOTA
+Os perfis de rede são a configuração específica das comunidades, e são armazenados neste repositório coletivo
+[repositório](https://github.com/libremesh/network-profiles/), mas também podem ser mantidos localmente, dependendo de como cada comunidade gerencia sua rede. Para mais instruções sobre como criar um perfil ou como usar um local, consulte a [página de perfis de rede](../guide/network-profiles).
+:::
+
+
+### Usando make defconfig
+
+#### exportar target-subtarget para o ambiente
+``` sh-vue
+export TARGET=ath79
+export SUBTARGET=generic
+```
+
+#### configuração
+
+#### Configurações de target, subtarget e genéricas
+
+```sh
+cat << EOF > .config
+CONFIG_TARGET_${TARGET}=y
+CONFIG_TARGET_${TARGET}_${SUBTARGET}=y
+CONFIG_TARGET_ROOTFS_INITRAMFS=y
+CONFIG_TARGET_MULTI_PROFILE=y
+CONFIG_TARGET_PER_DEVICE_ROOTFS=y
+# CONFIG_FEED_libremesh is not set
+# CONFIG_FEED_profiles is not set
+CONFIG_IMAGEOPT=y
+CONFIG_VERSIONOPT=y
+CONFIG_KERNEL_BUILD_USER=\"builder\"
+CONFIG_KERNEL_BUILD_DOMAIN=\"buildhost\"
+# CONFIG_VERSION_CODE_FILENAMES is not set
+EOF
+make defconfig
+```
+
+#### Módulos do kernel (opcional)
+Compile opcionalmente todos os módulos do kernel para expô-los posteriormente em um servidor http
+Necessário para instalar, através do gerenciador de pacotes, pacotes que dependem de módulos de kernel não padrão.
+```sh
+cat << EOF >> .config
+CONFIG_DEVEL=y
+CONFIG_ALL_KMODS=y
+CONFIG_ALL_NONSHARED=y
+EOF
+make defconfig
+```
+
+#### Perfil do roteador
+Seleciona o perfil do roteador com base na string compatível:
+
+```
+echo "CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_librerouter_librerouter-v1=y" >> .config
+make defconfig
+```
+
+#### Pacotes LibreMesh
+```sh
+cat << EOF >> .config
+# CONFIG_PACKAGE_dnsmasq is not set
+# CONFIG_PACKAGE_odhcpd-ipv6only is not set
+# CONFIG_PACKAGE_ppp is not set
+# CONFIG_PACKAGE_ppp-mod-pppoe is not set
+CONFIG_PACKAGE_kmod-ppp=m
+CONFIG_PACKAGE_kmod-pppoe=m
+CONFIG_PACKAGE_kmod-pppox=m
+CONFIG_PACKAGE_profile-libremesh-suggested-packages=y
+EOF
+make defconfig
+```
+
+## Compilar o LibreMesh
+
+Finalmente, compile as imagens
+```sh
+make -j$(nproc)
+```
+Consulte o OpenWrt [dicas para o make](https://openwrt.org/docs/guide-developer/toolchain/use-buildsystem#make_tips) para opções detalhadas.
+
+Se tudo correr bem, você deverá encontrar os binários produzidos dentro do diretório `bin/`.
+
+::: tip NOTA
+Se após a compilação você não vir a imagem compilada na pasta `bin/targets/.../.../`, pode ser que seu roteador tenha uma memória flash tão pequena que os pacotes mencionados anteriormente não caibam nela (também pode acontecer com roteadores de 8 MB de memória flash ao selecionar pacotes muito grandes para incluir). Nesse caso, você pode remover a lista de pacotes gerada por `.config` e repetir a seleção de pacotes sem incluir `lime-app`. Se a imagem compilada ainda for muito grande, tente selecionar apenas `lime-proto-anygw`, `lime-proto-batadv` e `lime-proto-babeld` ou seguindo [este guia](https://openwrt.org/docs/guide-user/additional-software/saving_space).
+:::
+
+Consulte as páginas no **Guia de desenvolvimento** [testes](/development/testing) e [virtualização](/development/virtualizing)
+para emular no seu computador com qemu.
diff --git a/docs/pt-BR/build/imagebuilder.md b/docs/pt-BR/build/imagebuilder.md
new file mode 100644
index 0000000..5ff2032
--- /dev/null
+++ b/docs/pt-BR/build/imagebuilder.md
@@ -0,0 +1,224 @@
+---
+aside: false
+---
+
+
+
+# ImageBuilder
+
+[[toc]]
+
+Consulte a wiki do OpenWrt [Usando o Image Builder](https://openwrt.org/docs/guide-user/additional-software/imagebuilder)
+para opções detalhadas
+
+::: tip
+Encontre o `target-subtarget` do seu dispositivo usando a [Tabela de Hardware do OpenWrt](https://toh.openwrt.org) ou o [firmware-selector](https://firmware-selector.libremesh.org)
+:::
+
+
+## Configuração
+
+Exporte para o ambiente o `target-subtarget` e o pacote `architecture`
+``` sh-vue
+export TARGET={{ build.target }}
+export ARCH=$(curl -s https://downloads.openwrt.org/snapshots/.targets.json | \
+ sed 's/\//-/' | jq -r '.\"\${TARGET}\"')
+```
+
+### Compilação no Debian
+Consulte a wiki do OpenWrt [Usando o Image Builder](https://openwrt.org/docs/guide-user/additional-software/imagebuilder)
+
+- Instale os [pré-requisitos do OpenWrt ImageBuilder para Debian](https://openwrt.org/docs/guide-user/additional-software/imagebuilder#debianubuntumint)
+
+- Faça o download do imagebuilder de sua escolha, extraia-o e entre em seu diretório.
+
+::: code-group
+
+```sh-vue [{{ openwrt.stable_version }} (estável)]
+FILE_HOST="{{build.file_host}}"
+DOWNLOAD_PATH="{{download_path(openwrt.stable_version)}}"
+DOWNLOAD_FILE="{{build.download_file}}"
+
+mkdir imagebuilder; cd imagebuilder
+wget -nv "$FILE_HOST/$DOWNLOAD_PATH/sha256sums" -O sha256sums
+file_name="$(grep "$DOWNLOAD_FILE" sha256sums | cut -d "*" -f 2)"
+wget -nv "$FILE_HOST/$DOWNLOAD_PATH/$file_name"
+tar xf "$file_name" --strip=1 --no-same-owner -C .
+```
+
+```sh-vue [{{ openwrt.oldstable_version }} (estável anterior)]
+FILE_HOST="{{build.file_host}}"
+DOWNLOAD_PATH="{{download_path(openwrt.oldstable_version)}}"
+DOWNLOAD_FILE="{{build.download_file}}"
+
+mkdir imagebuilder; cd imagebuilder
+wget -nv "$FILE_HOST/$DOWNLOAD_PATH/sha256sums" -O sha256sums
+file_name="$(grep "$DOWNLOAD_FILE" sha256sums | cut -d "*" -f 2)"
+wget -nv "$FILE_HOST/$DOWNLOAD_PATH/$file_name"
+tar xf "$file_name" --strip=1 --no-same-owner -C .
+```
+
+```sh-vue [SNAPSHOT]
+FILE_HOST="{{build.file_host}}"
+DOWNLOAD_PATH="{{download_path('SNAPSHOT')}}"
+DOWNLOAD_FILE="{{build.download_file}}"
+
+mkdir imagebuilder; cd imagebuilder
+wget -nv "$FILE_HOST/$DOWNLOAD_PATH/sha256sums" -O sha256sums
+file_name="$(grep "$DOWNLOAD_FILE" sha256sums | cut -d "*" -f 2)"
+wget -nv "$FILE_HOST/$DOWNLOAD_PATH/$file_name"
+tar xf "$file_name" --strip=1 --no-same-owner -C .
+```
+
+:::
+
+
+### Compilação no Docker
+
+Inicie um ImageBuilder de sua escolha, por exemplo {{ build.target }} se seu dispositivo for compatível com ele
+
+::: code-group
+
+```sh-vue [{{ openwrt.stable_version }} (estável)]
+mkdir ./images/
+docker run -it \
+ -e TARGET=$TARGET \
+ -e ARCH=$ARCH \
+ -v $(pwd)/config/:/builder/files/etc/config/ \
+ -v $(pwd)/images:/images/ \
+ ghcr.io/openwrt/imagebuilder:$TARGET-v{{ openwrt.stable_version }}
+```
+
+```sh-vue [{{ openwrt.oldstable_version }} (estável anterior)]
+mkdir ./images/
+docker run -it \
+ -e TARGET=$TARGET \
+ -e ARCH=$ARCH \
+ -v $(pwd)/config/:/builder/files/etc/config/ \
+ -v $(pwd)/images:/images/ \
+ ghcr.io/openwrt/imagebuilder:$TARGET-v{{ openwrt.oldstable_version }}
+```
+
+```sh-vue [SNAPSHOT]
+mkdir ./images/
+docker run -it \
+ -e TARGET=$TARGET \
+ -e ARCH=$ARCH \
+ -v $(pwd)/config/:/builder/files/etc/config/ \
+ -v $(pwd)/images:/images/ \
+ ghcr.io/openwrt/imagebuilder:$TARGET
+```
+
+:::
+
+## Adicionar feeds do LibreMesh
+
+Dentro do contêiner, adicione os feeds de `lime-packages`.
+::: code-group
+
+
+```sh-vue [openwrt-{{ openwrt.stable_branch }} (estável)]
+cat << EOF >> repositories
+https://feed.libremesh.org/master/openwrt-{{ openwrt.stable_branch }}/x86_64/packages.adb
+https://feed.libremesh.org/master/openwrt-{{ openwrt.stable_branch }}/$ARCH/packages.adb
+https://feed.libremesh.org/profiles/openwrt-{{ openwrt.stable_branch }}/x86_64/packages.adb
+EOF
+
+cat << EOF > keys/libremesh.pem
+-----BEGIN PUBLIC KEY-----
+MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdFJZ2qVti49Ol8LJZYuxgOCLowBS
+8bI86a7zqhSbs5yon3JON7Yee7CQOgqwPOX5eMALGOu8iFGAqIRx5YjfYA==
+-----END PUBLIC KEY-----
+EOF
+```
+
+```sh-vue [openwrt-{{ openwrt.oldstable_branch }} (estável anterior)]
+cat << EOF >> repositories.conf
+src/gz libremesh_packages https://feed.libremesh.org/master/openwrt-{{ openwrt.oldstable_branch }}/x86_64
+src/gz libremesh_arch_packages https://feed.libremesh.org/master/openwrt-{{ openwrt.oldstable_branch }}/$ARCH
+src/gz profiles https://feed.libremesh.org/profiles/openwrt-{{ openwrt.oldstable_branch }}/x86_64
+EOF
+
+cat << EOF > keys/a71b3c8285abd28b
+untrusted comment: signed by libremesh.org key a71b3c8285abd28b
+RWSnGzyChavSiyQ+vLk3x7F0NqcLa4kKyXCdriThMhO78ldHgxGljM/8
+EOF
+```
+
+```sh-vue [apk - openwrt-SNAPSHOT]
+cat << EOF >> repositories
+https://feed.libremesh.org/master/openwrt-main/x86_64/packages.adb
+https://feed.libremesh.org/master/openwrt-main/$ARCH/packages.adb
+https://feed.libremesh.org/profiles/openwrt-main/x86_64/packages.adb
+EOF
+
+cat << EOF > keys/libremesh.pem
+-----BEGIN PUBLIC KEY-----
+MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEdFJZ2qVti49Ol8LJZYuxgOCLowBS
+8bI86a7zqhSbs5yon3JON7Yee7CQOgqwPOX5eMALGOu8iFGAqIRx5YjfYA==
+-----END PUBLIC KEY-----
+EOF
+```
+
+:::
+
+## Arquivos personalizados
+Idealmente, adicione seus próprios arquivos `lime-community` dentro do contêiner na pasta `./files/etc/config/`.
+Para encontrar todas as opções possíveis, consulte a página [`Configuration`][/reference/configuration].
+
+Agora crie uma imagem de sua escolha; para ver os nomes dos perfis suportados, execute primeiro `make info`.
+
+
+## Compilação
+
+```sh
+make image \
+ PROFILE=ubnt_unifi \
+ BIN_DIR=/images \
+ FILES=files \
+ PACKAGES="-dnsmasq -odhcpd-ipv6only \
+ lime-system lime-proto-babeld lime-proto-batadv lime-proto-anygw \
+ lime-hwd-openwrt-wan lime-hwd-ground-routing \
+ babeld-auto-gw-mode check-date-http batctl-default \
+ lime-app lime-debug lime-docs lime-docs-minimal \
+ shared-state-babeld_hosts shared-state-bat_hosts \
+ shared-state-dnsmasq_hosts shared-state-nodes_and_links"
+```
+
+### Compilação usando Perfis de Rede
+
+Consulte [Perfis de Rede](/guide/network-profiles)
+
+```sh
+make image \
+ PROFILE=ubnt_unifi \
+ BIN_DIR=/images \
+ FILES=files \
+ PACKAGES="-dnsmasq -odhcpd-ipv6only profile-libremesh-suggested-packages"
+```
diff --git a/docs/pt-BR/build/index.md b/docs/pt-BR/build/index.md
new file mode 100644
index 0000000..f13edf9
--- /dev/null
+++ b/docs/pt-BR/build/index.md
@@ -0,0 +1,23 @@
+---
+outline: deep
+---
+
+# Compilar o LibreMesh
+
+## Métodos recomendados
+
+### Firmware Selector
+Baixe o firmware para o seu dispositivo através do Firmware Selector.
+
+https://firmware-selector.libremesh.org
+
+O Firmware Selector solicita uma compilação de firmware através de uma instância do [`ASU`](https://github.com/openwrt/asu) (ImageBuilder online).
+
+### [ImageBuilder](imagebuilder)
+Montar kernel pré-compilado, pacotes e informações do dispositivo para produzir o firmware
+
+### [Buildroot](buildroot)
+Compilar tudo: ferramentas, toolchain, kernel, pacotes, firmwares
+
+## Outros métodos
+Lista de [frontends de imagebuilder](https://openwrt.org/docs/guide-developer/imagebuilder_frontends) na wiki do OpenWrt
diff --git a/docs/pt-BR/development/contributing.md b/docs/pt-BR/development/contributing.md
new file mode 100644
index 0000000..fd583eb
--- /dev/null
+++ b/docs/pt-BR/development/contributing.md
@@ -0,0 +1,179 @@
+---
+title: "Contribuindo"
+---
+# Contribuindo
+
+Ao contribuir para este repositório, por favor discuta primeiro a alteração que você deseja fazer via issue,
+e-mail ou qualquer outro método antes de fazer uma alteração.
+
+Por favor, note que temos um código de conduta, por favor siga-o em todas as suas interações com o projeto.
+
+## Forks e Pull Requests
+
+O desenvolvimento no lime-packages segue o método Fork e Pull Request popularizado pelo GitHub:
+
+- Cada colaborador tem sua própria cópia completa, chamada de *Fork*
+- Colaboradores implementam funcionalidades ou corrigem bugs em seu próprio fork em um branch de funcionalidade.
+- Quando o colaborador deseja integrar suas alterações de volta ao repositório principal,
+ criará um *Pull Request*.
+
+Cada um desses passos será discutido por sua vez:
+
+#### Forking
+
+A primeira coisa que você precisará para desenvolver é criar uma nova cópia do repositório para
+trabalhar. Isso é conhecido como "Forking" e é uma característica definidora de sistemas
+SCM distribuídos: cada pessoa trabalha em sua própria cópia completa do repositório. O Git é projetado para
+tornar trivial manter esses repositórios sincronizados passando revisões assinadas entre as
+cópias individuais.
+
+Para criar um fork:
+
+1. Faça login no GitHub e vá para o [repositório GitHub do lime-packages](https://github.com/libremesh/lime-packages).
+
+2. Clique em "Fork". Você deve ser redirecionado para uma cópia completa do repositório que agora reside em sua conta.
+
+3. Em sua estação de trabalho, crie um clone do repositório Git:
+ ```git clone git@github.com:/lime-packages.git```
+ Isso criará mais uma cópia completa do repositório: uma que residirá
+ em sua estação de trabalho.
+
+4. Faça checkout do branch `master`.
+ ```git checkout master```
+
+### Branching
+
+Quaisquer alterações feitas na base de código do lime-packages devem ser feitas em seu próprio branch. O branch
+deve ser criado a partir da ponta do `master`, que é o branch de desenvolvimento. Antes de começar
+qualquer trabalho, certifique-se de buscar as últimas alterações upstream do repositório.
+Fazer isso garantirá que você tenha uma cópia atualizada do `master`, que alterações feitas por outros
+não serão perdidas, e também reduzirá as chances de conflitos quando chegar a hora de mesclar as
+alterações de volta ao lime-packages.
+
+#### Nomes de Branches
+
+Existe apenas um branch principal:
+
+- `master`: este branch é a versão de trabalho que está atualmente em desenvolvimento. Todos
+ os novos branches de funcionalidade devem ser criados a partir da ponta do `master` e todos os PRs devem ter `master`
+ definido como destino.
+
+Para quaisquer novos branches de funcionalidade, a convenção de nomenclatura recomendada é:
+
+### `/`
+
+#### ``
+```
+issue - Alterações de código vinculadas a um problema conhecido.
+feature - Nova funcionalidade.
+hotfix - Correções rápidas na base de código.
+sandbox - Experimentos (nunca serão mesclados).
+```
+
+#### ``
+Sempre use traços para separar palavras, e mantenha curto.
+
+##### Exemplos
+```
+issue/133
+feature/smonit
+hotfix/driver-xxx
+sandbox/new-crazy-thing
+```
+
+#### Fluxo de trabalho geral
+
+O fluxo de trabalho geral para branching é o seguinte:
+
+1. Busque as alterações mais recentes de `upstream` (ou seja, do repositório principal):
+
+ ```git fetch upstream master```
+
+2. Faça checkout da sua cópia de `master` e mescle as alterações upstream:
+
+ ```git checkout master```
+
+ ```git merge upstream/master```
+
+ Agora você tem uma cópia atualizada do branch `master`.
+
+3. Crie um novo branch para suas alterações:
+
+ ```git checkout -b ```
+
+4. Execute os testes: leia a [[documentação de testes](testing)].
+
+5. Faça suas alterações, recomendamos tentar adicionar um teste.
+
+6. Certifique-se de que os testes continuem sendo executados com sucesso.
+
+7. Envie as alterações para `origin` (ou seja, seu fork)
+
+ ```git push origin ```
+
+8. Crie um novo Pull Request (veja abaixo).
+
+#### Criando um Pull Request
+
+Para integrar suas alterações no repositório principal de lime-packages, você precisará
+criar um *Pull Request* no GitHub.
+
+1. Faça login no GitHub e vá para o seu fork de lime-packages.
+
+2. Clique em "New Pull Request"
+
+3. Certifique-se de que as seguintes propriedades estejam definidas:
+
+ - Fork base = `libremesh/lime-packages`
+ - Base = `master`
+ - Fork de origem = seu fork de lime-packages
+ - Comparar = o branch que você deseja mesclar
+
+4. Adicione uma descrição do que é a alteração e clique em "Create Pull Request".
+
+Neste ponto, é recomendável notificar um dos outros desenvolvedores do
+pull request e pedir que eles realizem uma revisão rápida. Eles farão
+quaisquer comentários no próprio pull request, que você deve receber como notificações do GitHub ou como
+e-mails.
+
+Uma vez que o revisor tenha aprovado o pull request, e o GitHub tenha indicado que ele pode
+ser mesclado automaticamente, você é livre para mesclar o pull request.
+
+#### Lidando com conflitos
+
+Às vezes, o GitHub relatará que o Pull Request não pode ser mesclado automaticamente,
+o que geralmente significa que há conflitos de mesclagem.
+
+Geralmente é uma boa ideia resolver os conflitos no branch em que você está trabalhando,
+em vez de fazer isso no `master`.
+
+Para fazer isso:
+
+1. Obtenha as alterações mais recentes do branch upstream `master`
+
+ ```git fetch upstream master```
+
+2. Certifique-se de estar na sua branch de funcionalidade.
+
+3. Mescle as alterações upstream no master. Você verá "mensagens de conflito"
+
+ ```git merge upstream/master$$
+
+4. Use uma ferramenta de mesclagem para resolver os conflitos. Se uma estiver configurada com o Git,
+ executar `git mergetool` deve abri-la. Algumas ferramentas GUI como
+ [esta](https://git-scm.com/download/gui/linux) têm uma integrada.
+
+5. Certifique-se de que a mesclagem foi bem-sucedida construindo e testando as alterações.
+
+6. Confirme as alterações e envie para origin.
+
+ ```git commit$$
+
+ ```git push origin ```
+
+Se você já tiver um Pull Request pendente, o GitHub deve detectar as mudanças
+recentes e indicar que o PR está pronto para ser mesclado.
+
+### Mais informações
+
+Para mais informações, consulte [Collaborating on projects using issues and pull requests](https://help.github.com/categories/collaborating-on-projects-using-issues-and-pull-requests/) no guia de ajuda do GitHub.
diff --git a/docs/pt-BR/development/hacking.md b/docs/pt-BR/development/hacking.md
new file mode 100644
index 0000000..80c231f
--- /dev/null
+++ b/docs/pt-BR/development/hacking.md
@@ -0,0 +1,7 @@
+---
+title: "Hacking"
+---
+# Hacking
+::: warning
+Esta página está pendente de tradução. [Ver em inglês](/development/hacking).
+:::
diff --git a/docs/pt-BR/development/hacking/kernel_vermagic.md b/docs/pt-BR/development/hacking/kernel_vermagic.md
new file mode 100644
index 0000000..9de69e6
--- /dev/null
+++ b/docs/pt-BR/development/hacking/kernel_vermagic.md
@@ -0,0 +1,5 @@
+---
+title: Vermagic do kernel
+---
+
+# {{ $frontmatter.title }}
\ No newline at end of file
diff --git a/docs/pt-BR/development/testing.md b/docs/pt-BR/development/testing.md
new file mode 100644
index 0000000..0072f25
--- /dev/null
+++ b/docs/pt-BR/development/testing.md
@@ -0,0 +1,45 @@
+---
+title: "Guia de testes"
+---
+# Guia de testes
+
+O LibreMesh tem testes unitários que nos ajudam a adicionar novas funcionalidades mantendo o esforço de manutenção contido.
+
+Encorajamos os colaboradores a escrever testes ao adicionar novas funcionalidades e também ao corrigir regressões.
+
+Os testes unitários do LibreMesh são baseados na poderosa biblioteca [busted](https://lunarmodules.github.io/busted/) que tem uma documentação muito boa.
+
+Os testes são executados dentro de uma imagem Docker x86_64 com algumas bibliotecas lua e openwrt disponíveis.
+
+Também temos uma máquina virtual qemu para desenvolvimento, é uma imagem completa do libremesh que pode ser usada em desenvolvimento.
+
+## Como executar os testes
+
+Apenas execute `./run_tests`:
+
+
+
+Isso irá construir automaticamente a imagem de teste do Docker na primeira execução e então executar os testes e criar o relatório de cobertura.
+Nota: você deve ter o Docker instalado e em execução.
+Nota: você deve executar os testes como `usuário não root`: para executar docker sem root adicione seu usuário no grupo docker, então reinicie o docker.service, e faça login novamente como seu próprio usuário.
+```
+su root
+/sbin/groupadd docker
+/sbin/usermod -aG docker $USER
+systemctl restart docker
+su - $USER
+```
+Verifique se o docker está funcionando, ele deve retornar sem erros e uma saída como a abaixo:
+```
+user@machine: docker ps -a
+CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
+```
+
+Use `LUA_ENABLE_LOGGING=1 ./run_tests` se quiser enviar os logs para stdout.
+
+## Estrutura do diretório de testes
+
+O código lua do pacote `foo` deve estar na forma de *estrutura de árvore de arquivos expandida*:
+`package/foo/files/usr/lib/lua/foo.lua`
+
+Arquivos de teste vivem dentro de um diretório `tests` com seus nomes começando com `test_`:
\ No newline at end of file
diff --git a/docs/pt-BR/development/virtualizing.md b/docs/pt-BR/development/virtualizing.md
new file mode 100644
index 0000000..c73cf94
--- /dev/null
+++ b/docs/pt-BR/development/virtualizing.md
@@ -0,0 +1,7 @@
+---
+title: "Executar LibreMesh no QEMU"
+---
+# Virtualizando
+::: warning
+Esta página está pendente de tradução. [Ver em inglês](/development/virtualizing).
+:::
diff --git a/docs/pt-BR/diagrams/libremesh-interfaces-openwrt-one.md b/docs/pt-BR/diagrams/libremesh-interfaces-openwrt-one.md
new file mode 100644
index 0000000..b4b7540
--- /dev/null
+++ b/docs/pt-BR/diagrams/libremesh-interfaces-openwrt-one.md
@@ -0,0 +1,6 @@
+---
+sidebar: false
+layout: page
+---
+
+
diff --git a/docs/pt-BR/features.md b/docs/pt-BR/features.md
new file mode 100644
index 0000000..db0212b
--- /dev/null
+++ b/docs/pt-BR/features.md
@@ -0,0 +1,13 @@
+---
+outline: deep
+---
+
+# Recursos
+
+## Modularidade
+
+Com uma única base de código, o LibreMesh oferece uma escolha de `padrões razoáveis` para os protocolos mesh mais comuns: `Babel`, `B.A.T.M.A.N. advanced`, `BMX7`, `OLSR`.
+
+Ele pode ser usado para se juntar a uma rede mesh existente com configuração mínima.
+
+Pode ser usado como ambiente de testes para configurações de diferentes protocolos.
diff --git a/docs/pt-BR/getting-started.md b/docs/pt-BR/getting-started.md
new file mode 100644
index 0000000..417b4ad
--- /dev/null
+++ b/docs/pt-BR/getting-started.md
@@ -0,0 +1,82 @@
+---
+title: "Primeiros passos"
+---
+# Primeiros passos
+
+## Instalação
+
+### Requisitos
+Consulte a [Tabela de hardware (Table of Hardware)](https://toh.openwrt.org) para ver se o seu dispositivo é compatível com o OpenWrt.
+
+::: tip NOTA
+Recomenda-se que o roteador tenha **pelo menos**:
+ - 16 MB de memória flash e 128 MB de RAM.
+ - 1 rádio funcionando em 2,4 GHz e 1 em 5 GHz
+
+É possível instalar o LibreMesh em roteadores com 8 MB de flash e 64 MB de RAM
+Leia o [`8/64 warning`](https://openwrt.org/supported_devices/864_warning) do OpenWrt e consulte a página [seleção de pacotes (em)](/guide/packages-selection) para personalizar a compilação.
+:::
+
+::: warning ATENÇÃO
+Certifique-se de ter lido a página da wiki do OpenWrt sobre o seu dispositivo.
+Leia as instruções de instalação e verifique se você tem o hardware necessário — se for o caso — para instalar o firmware, como um [adaptador USB-UART/Serial](https://openwrt.org/docs/guide-user/installation/generic.flashing.serial) e/ou um
+[adaptador USB-JTAG](https://openwrt.org/docs/techref/hardware/port.jtag)
+:::
+
+### Baixar o firmware
+---
+
+**Firmware Selector**
+O Firmware Selector solicita uma compilação de firmware através de uma instância do [`ASU`](https://github.com/openwrt/asu) (ImageBuilder online).
+
+https://firmware-selector.libremesh.org
+
+---
+
+**Versões pré-compiladas**
+Arquivo de releases antigas com firmwares pré-compilados via Buildroot.
+
+https://firmware-libremesh.antennine.org
+
+---
+
+**Compile o LibreMesh no seu host**
+Consulte a página [`Compilar o LibreMesh` (em)](/build/) para ver as instruções de como compilar o LibreMesh no seu host.
+
+---
+
+### Instalar o firmware
+Instale o firmware no seu dispositivo seguindo o método de instalação indicado na [wiki do OpenWrt](https://openwrt.org)
+ou, se não estiver lá, procure as instruções na mensagem de **`git-commit`** deixada por quem adicionou o suporte para aquele modelo de dispositivo. Veja a [Tabela de hardware](https://toh.openwrt.org).
+
+::: tip NOTA
+Se o seu dispositivo estiver rodando o firmware de fábrica, é recomendado **instalar o OpenWrt primeiro**:
+:::
+
+1. Baixe o firmware `stable` mais recente para o seu dispositivo no [`OpenWrt Firmware Selector`](https://firmware-selector.openwrt.org).
+ Use a imagem `factory` para a primeira instalação. Consulte [Factory Install: First Time Installation (em)](https://openwrt.org/docs/guide-quick-start/factory_installation):
+2. Verifique se o dispositivo com OpenWrt inicializa e funciona corretamente.
+ Atenção: por padrão, o OpenWrt não liga o Wi-Fi.
+ Ligue-o pelo `LuCI` no menu `Network` / `Wireless`.
+3. Atualize para o LibreMesh usando uma imagem `squashfs-sysupgrade.bin`:
+ - Envie o firmware pela interface web `LuCI` no menu `System` / `Backup / Flash Firmware`.
+ - Ou instale via SSH usando o comando `sysupgrade -n firmware.bin`.
+
+
+## Conectando ao roteador
+O roteador pode ser acessado pela web em http://thisnode.info.
+Veja a página [Conectando ao roteador (em)](/guide/connecting) para opções detalhadas e solução de problemas.
+
+
+## Configuração
+O LibreMesh vem com um [sabor padrão (em)](/reference/flavors) que funciona out of the box, sem precisar de configuração manual.
+
+Veja a página de [configuração (em)](/reference/configuration) para opções detalhadas.
+
+
+## Manutenção
+Instale versões estáveis mais recentes do OpenWrt para manter o dispositivo atualizado:
+- Inscreva-se na newsletter [`OpenWrt Announce`](https://lists.openwrt.org/mailman/listinfo/openwrt-announce).
+- Ou siga o [`OpenWrt Announcement-Bot`](https://social.tchncs.de/@openwrt) no Mastodon.
+
+Veja a página [Atualizar (em)](/guide/upgrade) para operações recomendadas com o LibreMesh.
diff --git a/docs/pt-BR/guide/connecting.md b/docs/pt-BR/guide/connecting.md
new file mode 100644
index 0000000..df887f3
--- /dev/null
+++ b/docs/pt-BR/guide/connecting.md
@@ -0,0 +1,96 @@
+---
+title: "Conectando ao roteador"
+---
+# Conectando ao roteador
+
+## pelo navegador web
+No FQDN do anygw padrão http://thisnode.info.
+
+Esses endereços também estão disponíveis:
+ - http://10.13.0.1 - anygw padrão ipv4
+ - http://10.13.x.x - endereço ipv4 padrão do nó na LAN `br-lan`
+ - http://meuno.info - outro FQDN do anygw
+ - http://minodo.info - outro FQDN do anygw
+ - http://\ - `hostname` do dispositivo
+ - http://\.thisnode.info - FQDN do dispositivo
+ - http://\[fd0d:fe46:8ce8::1\] - anygw padrão ipv6
+ - http://\[fd0d:fe46:8ce8::x\:xx\] - endereço ipv6 padrão do nó na LAN `br-lan`
+
+
+
+## por SSH
+
+Veja [SSH no OpenWrt (em)](https://openwrt.org/docs/guide-quick-start/sshadministration)
+
+Os seguintes aliases de bash são recomendados:
+- `+ssh-rsa` - (opcional) Necessário se o nó roda uma versão do OpenWrt anterior à branch 23.05
+- `ussh` - um alias para:
+ - Ignorar arquivos de hosts conhecidos, útil ao se conectar ao endereço do Anygw `10.13.0.1` ou ao FQDN do anygw `thisnode.info`
+ - Desativar `StrictHostKeyChecking`, útil para reconectar após atualizar para uma versão mais recente do OpenWrt sem "manter configurações".
+
+```sh
+cat << EOF >> ~/.bashrc
+alias ssh="ssh -o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedKeyTypes=+ssh-rsa"
+alias ussh="ssh -o UserKnownHostsFile=/dev/null -o GlobalKnownHostsFile=/dev/null -o StrictHostKeyChecking=no"
+EOF
+source ~/.bashrc
+```
+
+Conecte-se ao dispositivo
+```sh
+ussh root@thisnode.info
+```
+
+Uma vez estabelecida a conexão, os banners padrão serão impressos no console:
+```
+BusyBox v1.37.0 (2026-03-05 17:27:01 UTC) built-in shell (ash)
+
+ _______ ________ __
+ | |.-----.-----.-----.| | | |.----.| |_
+ | - || _ | -__| || | | || _|| _|
+ |_______|| __|_____|__|__||________||__| |____|
+ |__| W I R E L E S S F R E E D O M
+ -----------------------------------------------------
+ OpenWrt 25.12.0, r32713-f919e7899d Dave's Guitar
+ -----------------------------------------------------
+
+ === WARNING! =====================================
+ There is no root password defined on this device!
+ Use the "passwd" command to set up a new password
+ in order to prevent unauthorized SSH logins.
+ --------------------------------------------------
+
+ ___ __ __ _______ __
+ | |_|__| |--.----.-----.| | |-----.-----| |--.
+ | | | _ | _| -__|| | -__|__ --| |
+ |_____|__|_____|__| |_____||__|_|__|_____|_____|__|__|
+
+ ------------------------------------------------------
+ LiMe master development (master rev. 7929208 20260304_1752)
+ ------------------------------------------------------
+ https://libremesh.org
+ ------------------------------------------------------
+
+ === System Notes =================================================
+
+ = edit via http://thisnode.info/app/#/notes or /etc/banner.notes =
+
+
+ OpenWrt recently switched to the "apk" package manager!
+
+ OPKG Command APK Equivalent Description
+ ------------------------------------------------------------------
+ opkg install apk add Install a package
+ opkg remove apk del Remove a package
+ opkg upgrade apk upgrade Upgrade all packages
+ opkg files apk info -L List package contents
+ opkg list-installed apk info List installed packages
+ opkg update apk update Update package lists
+ opkg search apk search Search for packages
+ ------------------------------------------------------------------
+
+For more information visit:
+https://openwrt.org/docs/guide-user/additional-software/opkg-to-apk-cheatsheet
+
+root@openwrt:~#
+```
diff --git a/docs/pt-BR/guide/network-profiles.md b/docs/pt-BR/guide/network-profiles.md
new file mode 100644
index 0000000..8eae61e
--- /dev/null
+++ b/docs/pt-BR/guide/network-profiles.md
@@ -0,0 +1,86 @@
+---
+title: "Perfis de rede"
+---
+# Perfis de rede
+
+## O que é um Perfil de Rede?
+
+Perfis de rede são a forma mais conveniente para uma comunidade organizar seus arquivos de configuração. Durante o [processo de compilação](/build/buildroot), os usuários podem selecionar o perfil de rede desejado, que selecionará automaticamente todo o software necessário e incluirá os arquivos de configuração para essa comunidade.
+
+Eles estão organizados em pastas com algum conteúdo no [repositório de perfis de rede](https://github.com/libremesh/network-profiles).
+
+## Como criar um Perfil de Rede
+
+Praticamente, cada comunidade pode criar uma pasta no [repositório de perfis de rede](https://github.com/libremesh/network-profiles) com o nome da comunidade e, dentro dela, criar um ou mais perfis (por exemplo, você pode ter perfis diferentes para nós do backbone ou para pontos de acesso, ou para nós com memória flash ou RAM grande ou pequena).
+
+Você precisará criar um usuário no GitHub, fazer um fork do [repositório de perfis de rede](https://github.com/libremesh/network-profiles), clonar seu fork em um computador, criar os diretórios, criar um `Makefile` (ver abaixo), adicionar conteúdo na pasta `root/` (ver abaixo), confirmar as alterações, enviá-las para seu repositório fork e finalmente abrir um pull request do seu repositório para o [repositório oficial de perfis](https://github.com/libremesh/network-profiles).
+
+### Clonando seu fork
+
+Aqui omitiremos a explicação da maioria dos passos relacionados com git e GitHub; pesquise na internet como realizá-los ou nos pergunte nos [canais de comunicação do projeto](/communication).
+
+Depois de fazer fork do [repositório de perfis de rede](https://github.com/libremesh/network-profiles) com seu usuário, clone seu fork:
+
+``` sh
+git clone git@github.com:seu_usuario/network-profiles.git
+```
+
+### Criando os diretórios
+
+Cada comunidade terá que criar seu diretório.
+
+``` sh
+cd network-profiles
+mkdir MinhaRede.cool
+```
+
+E dentro desse diretório, você terá que criar uma pasta para cada perfil diferente que desejar ter. A maioria das comunidades terá apenas um perfil.
+
+``` sh
+cd MinhaRede.cool
+mkdir padrao
+mkdir baixamem
+mkdir gateway
+```
+
+### Criando um Makefile
+
+Os Perfis de Rede são convertidos em pacotes que, como mencionado acima, incluirão alguns arquivos mas também podem selecionar um novo software para ser instalado como dependência. Para compilá-los como pacotes, é necessário um Makefile.
+
+No Makefile você pode indicar uma descrição e incluir uma lista de dependências, que são os pacotes selecionados ao escolher seu perfil de rede.
+
+O Makefile para o repositório de perfis de rede deve estar dentro do diretório do perfil, por exemplo `network-profiles/MinhaRede.cool/padrao/Makefile`, e terá o seguinte aspecto:
+
+``` makefile
+include $(TOPDIR)/rules.mk
+
+PROFILE_DESCRIPTION:=Perfil padrão para a comunidade MinhaRede
+PROFILE_DEPENDS:=+lime-proto-babeld +lime-proto-batadv +lime-proto-anygw
+
+include ../../profile.mk
+
+# call BuildPackage - Assinatura do buildroot do OpenWrt
+```
+
+e as linhas que você deve personalizar são apenas as de PROFILE_DESCRIPTION e PROFILE_DEPENDS. Na lista de PROFILE_DEPENDS, observe que o nome de cada pacote é precedido por um `+`. Não há necessidade de especificar o pacote `lime-system` pois já está incluído.
+
+### Adicionando arquivos à pasta "root"
+
+Para incluir arquivos personalizados na imagem compilada, você pode criar uma pasta `root/` na pasta do perfil, por exemplo `network-profiles/MinhaRede.cool/padrao/root/`. Neste diretório, você terá que criar a estrutura de pastas e os arquivos que deseja ter no firmware compilado.
+
+O que é sempre interessante incluir é um arquivo `lime-community`, que é o arquivo contendo as opções de configuração para sua comunidade. Este arquivo precisará aparecer na imagem do firmware em `/etc/config/lime-community`, para que você precisa criá-lo aqui em `network-profiles/MinhaRede.cool/padrao/root/etc/config/lime-community`.
+
+
+
+### Alternativa ao uso de Perfis de Rede
+
+Usar um perfil de rede é uma forma conveniente de compartilhar arquivos pela internet com todos os outros membros de sua comunidade; mas pode ser exagerado se você só quer testar adicionando um arquivo de vez em quando.
+
+No buildroot (que é o sistema que você pode usar para compilar o LibreMesh conforme descrito na [página de desenvolvimento](/build/buildroot)) você pode criar um diretório chamado `files`, e o conteúdo deste diretório sobrescreverá, na imagem final do LibreMesh, todos os arquivos com o mesmo caminho e nome, incluindo os do Perfil de Rede selecionado.
+
+Por exemplo:
+``` sh
+cd openwrt
+mkdir files
+rsync -aPh --delete ~/network-profiles/valsamoggia.ninux.org/vs-ninux-generic/root/ files/
+```
diff --git a/docs/pt-BR/guide/packages-selection.md b/docs/pt-BR/guide/packages-selection.md
new file mode 100644
index 0000000..0d1408a
--- /dev/null
+++ b/docs/pt-BR/guide/packages-selection.md
@@ -0,0 +1,134 @@
+---
+outline: deep
+---
+
+
+# Selección de paquetes
+
+## Personalización de la compilación
+
+Se recomienda realizar una personalización de la compilación. La principal ventaja de preinstalar todos los paquetes necesarios es preservar el **espacio de firmware** y la **RAM utilizada** en el dispositivo.
+
+::: tip NOTA
+Es posible instalar nuevo software mediante el gestor de paquetes `opkg` o el más reciente `apk`.
+Se **desaconseja encarecidamente** actualizar paquetes. Lee la [`advertencia sobre actualización de paquetes`](https://openwrt.org/meta/infobox/upgrade_packages_warning) de OpenWrt.
+:::
+
+::: warning Advertencia ath9k
+Los routers con radios Atheros y el controlador `ath9k` tienen un fallo conocido que hace que se queden sordos,
+si usas una versión de OpenWrt anterior a la 24.10.6 asegúrate de incluir el paquete libremesh `wifi-unstuck-wa`
+:::
+
+::: warning Advertencia ath10k
+Los routers con radios Atheros y el controlador predeterminado de OpenWrt `ath10k-ct` (ath10k fabricado por CandelaTech) son inestables/defectuosos con malla 80211s, solo funcionan con chipsets wave2. Reemplaza los paquetes relacionados con `ath10k-ct` por los paquetes `ath10k` correspondientes.
+:::
+
+
+## Ahorrando espacio y RAM
+
+- https://openwrt.org/supported_devices/864_warning
+- https://openwrt.org/docs/guide-user/additional-software/saving_space
+
+### Sabor Mini
+
+Para dispositivos `8/64` debería ser posible instalar una versión reducida del `sabor por defecto`.
+Consulta los detalles de los paquetes excluidos en [Sabor Mini](/reference/flavors)
+Esta lista de paquetes también es seleccionable incluyendo el perfil de red `profile-libremesh-suggested-packages-tiny`.
+
+
+
+### Excluyendo paquetes
+
+Por defecto, LibreMesh usa `dnsmasq-dhcpv6` en lugar del `dnsmasq` predeterminado de OpenWrt y `odhcpd-ipv6only`.
+Asegúrate de incluir una eliminación para estos al construir LibreMesh mediante ImageBuilder o Buildroot.
+
+
+Adicionalmente, estos paquetes podrían ser excluidos en la compilación del firmware:
+
+::: code-group
+
+``` [{{ openwrt.stable_version }}]
+-dnsmasq -odhcpd-ipv6only -apk-mbedtls -ca-bundle -ppp -ppp-mod-pppoe
+```
+
+``` [{{ openwrt.oldstable_version }}]
+-dnsmasq -odhcpd-ipv6only -opkg -ca-bundle -ppp -ppp-mod-pppoe
+```
+
+:::
+
+La misma lista para usar al construir con Buildroot.
+::: code-group
+
+
+``` [{{ openwrt.stable_version }}]
+cat << EOF >> .config
+CONFIG_PACKAGE_dnsmasq=m
+CONFIG_PACKAGE_odhcpd-ipv6only=m
+CONFIG_PACKAGE_apk-mbedtls=m
+CONFIG_PACKAGE_ca-bundle=m
+CONFIG_PACKAGE_ppp=m
+CONFIG_PACKAGE_ppp-mod-pppoe=m
+EOF
+make defconfig
+```
+
+``` [{{ openwrt.oldstable_version }}]
+cat << EOF >> .config
+CONFIG_PACKAGE_dnsmasq=m
+CONFIG_PACKAGE_odhcpd-ipv6only=m
+CONFIG_PACKAGE_opkg=m
+CONFIG_PACKAGE_ca-bundle=m
+CONFIG_PACKAGE_ppp=m
+CONFIG_PACKAGE_ppp-mod-pppoe=m
+EOF
+make defconfig
+```
+
+:::
+
+#### `apk-mbedtls`
+- Descripción: gestor de paquetes apk
+- Tamaño instalado: `258 KiB` (mediatek-filogic-v25.12.0)
+
+El router no podrá instalar paquetes después de la instalación
+
+#### `opkg`
+- Descripción: gestor de paquetes opkg (openwrt-24.10 y anteriores)
+
+El router no podrá instalar paquetes después de la instalación.
+
+#### `ca-bundle`
+- Descripción: Certificados CA del sistema como un paquete
+- Tamaño instalado: `219 KiB` (mediatek-filogic-v25.12.0)
+
+El router no podrá usar TLS, es decir, descargar datos de sitios que usen solo `https:` en lugar de `http:`
+
+#### `ppp`
+- Descripción: Este paquete contiene el demonio PPP (Protocolo Punto a Punto).
+- Tamaño instalado: `355 KiB` (mediatek-filogic-v25.12.0)
+
+Exclúyelo si no necesitas establecer conexiones ppp
+
+#### `ppp-mod-pppoe`
+- Descripción: Este paquete contiene un plugin PPPoE (PPP sobre Ethernet) para ppp.
+- Tamaño instalado: `65 KiB` (mediatek-filogic-v25.12.0)
+
+Exclúyelo si no necesitas establecer conexiones pppoe
+
+### Ejemplo de compilación
+
+```
+make image \
+ PROFILE=ubnt_unifi \
+ BIN_DIR=/images \
+ FILES=files \
+ PACKAGES="-dnsmasq -odhcpd-ipv6only \
+ -apk-mbedtls -ca-bundle -ppp -ppp-mod-pppoe \
+ profile-libremesh-suggested-packages-tiny"
+```
diff --git a/docs/pt-BR/guide/upgrade.md b/docs/pt-BR/guide/upgrade.md
new file mode 100644
index 0000000..49482d8
--- /dev/null
+++ b/docs/pt-BR/guide/upgrade.md
@@ -0,0 +1,69 @@
+---
+title: "Atualização"
+---
+# Atualização
+
+::: tip CUIDADO
+De tempos em tempos, pode acontecer de alguns dispositivos OpenWrt encontrarem problemas ao atualizar e ficarem "travados" ou "travados parcialmente"
+Certifique-se de ter **lido as notas de lançamento do OpenWrt** para a `versão`/`branch` que está instalando.
+
+Em **ambientes de produção com múltiplos nós LibreMesh** implantados, é recomendável manter pelo menos um dispositivo, para cada modelo que você está usando, para testar se as atualizações estão ok. Ou eventualmente recuperá-lo usando um `Adaptador USB Serial`.
+:::
+
+Consulte a wiki do OpenWrt para obter detalhes sobre o processo de atualização:
+- [Sysupgrade](https://openwrt.org/docs/techref/sysupgrade)
+- [Atualizando firmware OpenWrt usando LuCI e CLI](https://openwrt.org/docs/guide-user/installation/generic.sysupgrade)
+- [Preservando configurações OpenWrt durante a atualização do firmware](https://openwrt.org/docs/guide-quick-start/admingui_sysupgrade_keepsettings)
+
+
+## Sysupgrade
+O comando padrão do OpenWrt `sysupgrade` preserva:
+- arquivos definidos em `/lib/upgrade/keep.d`
+- a lista de `conffiles` (arquivos de configuração definidos por certos pacotes) que foram alterados:
+ - Veja a lista completa para `apk` com `cat /lib/apk/packages/*.conffiles`
+ - Veja a lista completa para `opkg` com `cat /usr/lib/opkg/info/*.conffiles`
+
+Os arquivos iniciais são preservados em `/rom/` e os arquivos alterados são criados em `/overlay/upper/`.
+
+```
+apk add diffutils
+diff /overlay/upper/etc/config/babeld /rom/etc/config/babeld
+```
+
+
+## Exemplos
+
+### Atualizar para uma nova versão principal do OpenWrt
+Exemplo que mantém apenas `lime-node` e `dropbear`.
+
+Substitua a lista de arquivos a serem preservados mantendo apenas os essenciais.
+Recomendado se toda a configuração estiver no `lime-node`.
+```
+mkdir /tmp/keep.d; mv /lib/upgrade/keep.d/* /tmp/keep.d/
+mv /usr/lib/opkg/status /tmp/opkg_status
+for i in /etc/config/dropbear /etc/dropbear /etc/config/lime-node; do echo $i >> /etc/sysupgrade.conf; done
+sysupgrade -l
+```
+
+Baixe o arquivo sysupgrade
+```
+wget -O /tmp/firmware.bin
+```
+a url do arquivo de atualização é por exemplo https://sysupgrade-01.antennine.org/store/45347ae7f75029abc37f0a4e41ebf9af72ef7b9ce8c93ff27a7d7ec5e9a54b2e/openwrt-25.12.0-82ccd0311e22-mediatek-filogic-cudy_wr3000s-v1-squashfs-sysupgrade.bin
+
+Atualize o roteador
+```
+sysupgrade -v /tmp/firmware.bin
+```
+
+## Ferramentas
+Ferramentas para atualizar a versão base do OpenWrt e os pacotes LibreMesh:
+
+### eupgrade
+fornece atualizações semi-automatizadas verificando se um novo firmware está disponível em um servidor https.
+
+### owut
+fornece atualizações usando uma instância de [`ASU`](https://github.com/openwrt/asu) (imagebuilder online). Teste instalando o pacote `profile-antennine.org-an-lime-owut`
+
+### safe-upgrade
+Wrapper ao redor de `sysupgrade`. Requer armazenamento flash grande, pelo menos o dobro do tamanho do firmware, para reverter em caso de algo não funcionar.
diff --git a/docs/pt-BR/index.md b/docs/pt-BR/index.md
new file mode 100644
index 0000000..19fcbc1
--- /dev/null
+++ b/docs/pt-BR/index.md
@@ -0,0 +1,78 @@
+---
+# https://vitepress.dev/reference/default-theme-home-page
+layout: home
+
+hero:
+ name: "LibreMesh"
+ text: "Um framework modular para criar firmwares baseados em OpenWrt para nós mesh sem fio"
+ tagline: Tornando possíveis as redes livres
+ image:
+ src: /lime.svg
+ actions:
+ - theme: brand
+ text: O que é o LibreMesh?
+ link: /pt-BR/what-is-libremesh
+ - theme: alt
+ text: Primeiros passos
+ link: /pt-BR/getting-started
+ - theme: alt
+ text: Firmware Selector
+ link: https://firmware-selector.libremesh.org
+
+features:
+ - icon:
+ src: /network_topology_mesh_icon.png
+ title: Redes mesh
+ details:
+ Redes mesh são redes nas quais todos os participantes (nós) podem rotear o tráfego de outros participantes.
+ Não há pontos centrais e a topologia física pode ser completamente aleatória.
+ Geralmente as redes mesh são descentralizadas, organizadas de baixo para cima, implantadas e mantidas pelas pessoas que as utilizam.
+ Acreditamos que essa é a única forma de alcançar uma rede verdadeiramente livre, fora do controle de governos e grandes empresas.
+ - icon:
+ src: /gnu_logo.png
+ title: Redes livres, sociedade livre
+ details: Entendemos que uma rede livre, como rede de telecomunicações, deve cumprir estes três pontos.
+ É aberta, de modo que qualquer pessoa possa se conectar se for fisicamente possível.
+ É neutra, sem preferências pelo tipo, origem ou destino dos dados.
+ É livre como em liberdade (libre significa "free as in free speech" em inglês).
+ Tudo o que desenvolvemos é software livre para uma sociedade livre, para que qualquer pessoa possa usar, copiar, modificar e distribuir sob a licença AGPL.
+
+ - icon:
+ src: /openwrt_logo_icon.png
+ title: Firmware e dispositivos embarcados
+ details: Um dispositivo embarcado é um computador pequeno. Normalmente, o sistema operacional que roda nesses computadores pequenos é chamado de firmware.
+ Nossa forma de implantar redes mesh livres é instalando nosso próprio firmware nos dispositivos (geralmente roteadores WiFi).
+ Nosso sistema é baseado no projeto OpenWrt, que por sua vez é baseado no conhecido sistema operacional Linux.
+---
+
+## Organizações que apoiam o LibreMesh:
+
+| | | | |
+| -------------| ----------------- | -------------------------- | ------------------------------------- |
+| AlterMundi | Argentina | https://altermundi.net |  |
+| Coolab | Brasil | https://wiki.coolab.org |  |
+| FreiFunk | Alemanha | https://freifunk.net |  |
+| FunkFeuer | Áustria | https://funkfeuer.at |  |
+| Guifi | Península Ibérica | https://guifi.net |  |
+| IBEBrasil | Brasil | https://ibebrasil.org.br |  |
+| LibreRouter | Global | https://librerouter.org |  |
+| Ninux | Itália | https://ninux.org |  |
+| NUPEF | Brasil | https://nupef.org.br/ | |
+| Wakoma | Global | https://wakoma.co |  |
+
+## Redes mesh comunitárias que usam o LibreMesh:
+
+| | | | |
+| --------------- | ------------------- | ----------------------------------------- | ------------------------- |
+| Antennine | Bolonha, Itália | https://antennine.noblogs.org |  |
+| Calafou | Catalunha | https://calafou.org/ | |
+| Coolab | Brasil | https://www.coolab.org/ | |
+| Janastu CowMesh | Karnataka rural | https://open.janastu.org/projects/cowmesh | |
+| NUPEF | Brasil | https://nupef.org.br/ | |
+
+
diff --git a/docs/pt-BR/reference/configuration.md b/docs/pt-BR/reference/configuration.md
new file mode 100644
index 0000000..2a5346b
--- /dev/null
+++ b/docs/pt-BR/reference/configuration.md
@@ -0,0 +1,57 @@
+---
+outline: deep
+---
+
+# Configuração
+
+## lime-files
+
+A configuração do LibreMesh é feita principalmente por um conjunto de arquivos `/etc/config/lime-`.
+Esses arquivos podem ser gerenciados através da [UCI](https://openwrt.org/docs/guide-user/base-system/uci)
+do OpenWrt ou editados manualmente com `vim`.
+Para modificá-los através da [interface web LuCI](https://openwrt.org/docs/guide-user/luci/luci.essentials), instale `luci-app-filemanager`.
+
+As opções contidas nesses arquivos são mescladas e sobrescritas da menor para a maior prioridade:
+
+``` sh-vue
+/etc/config/
+├─ lime-defaults # NÃO EDITE, configuração padrão
+├─ lime-community # configuração da comunidade
+├─ lime- # configuração do nó, específica do dispositivo
+├─ lime-node # configuração do nó
+└─ lime-autogen # NÃO EDITE, configuração autogerada
+```
+### Seções
+A configuração é dividida em três seções principais:
+- `config lime system` - Opções do sistema: hostname, domínio, root_password
+- `config lime network` - Opções de rede: ipv4/ipv6, resolvers DNS, lista de protocolos, opções de protocolos
+- `config lime wifi` - Opções wireless: lista de modos, opções de AP/Ad-Hoc/ApUP/80211s
+
+Por padrão, seguido por configurações específicas da banda de rádio:
+- `config lime-wifi-band 2ghz`
+- `config lime-wifi-band 5ghz`
+
+Opcionalmente, seguido por seções específicas de interface e opções específicas de protocolos
+- `config net port1`
+- `config wifi radio0`
+
+::: tip Seção específica de interface
+Seções específicas de interface devem ser incluídas em `lime-node` ou `lime-`.
+:::
+
+Opcionalmente, seguido por outros protocolos específicos, scripts e configs uci, ou hardware_modules
+- `config bgp_peer peer1`
+- `config generic_uci_config uhttpd_https`
+- `config hwd_watchcat periodic_reboot`
+
+### Opções parametrizáveis
+Dentro de `lime-files`, as opções marcadas com `Parametrizável com %Mn, %Nn, %H`, podem incluir os templates:
+- `%Mn`: substituído pelo n-ésimo byte da MAC da **`primary_interface`**
+- `%Nn`: substituído pelo n-ésimo (n = 1..5) byte do identificador de rede, calculado a partir do **hash de `ap_ssid`**.
+ Todos os nós que formam uma nuvem mesh (compartilham o mesmo `ap_ssid`) produzão o mesmo valor
+- `%H`: substituído pelo `hostname`
+
+
+## lime-config
+O comando `lime-config` configura o LibreMesh sobre o OpenWrt.
+Consulte a página [lime-config](lime-config) para os detalhes.
diff --git a/docs/pt-BR/reference/flavors.md b/docs/pt-BR/reference/flavors.md
new file mode 100644
index 0000000..a8ee420
--- /dev/null
+++ b/docs/pt-BR/reference/flavors.md
@@ -0,0 +1,96 @@
+---
+title: "Sabores"
+---
+
+
+# Flavors
+
+## Flavor padrão
+
+### Lista de pacotes
+O flavor `default` do LibreMesh contém estes pacotes:
+
+
+### Configuração
+
+#### Porta WAN
+Configurar como WAN
+Configurar protocolos padrão sobre ele:
+- `babeld:17` - cria uma VLAN soft 8021ad número 17 e executa babel sobre ela
+- `batadv:%N1` - cria uma VLAN soft 8021ad número %N1 e a adiciona à lista de interfaces batman-adv
+
+Isso cria 3 interfaces:
+- `wan@eth0` - cliente dhcp
+- `wan_17@eth0` - VLAN babeld 17 8021ad
+- `wan_29@eth0` - VLAN babeld 29 8021ad
+
+#### Portas LAN
+Adicionar cada porta lan à bridge principal `br-lan`
+Configurar protocolos padrão sobre cada porta:
+- `babeld:17` - cria uma VLAN soft 8021ad número 17 e executa babel sobre ela
+- `batadv:%N1` - cria uma VLAN soft 8021ad número %N1 e a adiciona à lista de interfaces batman-adv
+
+Configurar br-lan com opções de rede:
+- `main_ipv4_address`
+- `main_ipv6_address`
+
+Cria 3 interfaces para cada porta lan:
+- `lan@eth1` - dispositivo não gerenciado: pacotes sem tag irão para a interface `br-lan`
+- `lan_17@eth1` - VLAN babeld 17 8021ad
+- `lan_29@eth1` - VLAN babeld 29 8021ad
+
+#### Rádios `2ghz` e `5ghz`
+Configurar modos padrão `ieee80211s`, `ap`, `apname`
+
+Configurar protocolos padrão sobre cada porta:
+- `babeld:17` - cria uma VLAN soft 8021ad número 17 e executa babel sobre ela
+- `batadv:%N1` - cria uma VLAN soft 8021ad número %N1 e a adiciona à lista de interfaces batman-adv
+
+
+
+#### Anygw
+A bridge br-lan inclui portas ethernet `lan` bem como interfaces de rádio configuradas como Ponto de Acesso (modo `ap` ou `apname`)
+
+Sobre `br-lan` é configurada uma interface `mac-vlan` para o recurso `anygateway`.
+Os endereços MAC/ipv4/ipv6 desta interface são os mesmos para todos os nós que compartilham o mesmo `lime-autogen.wifi.ap_ssid`
+
+#### Estado compartilhado
+Um daemon Conflict-Free Replicated Data Type (CRDT).
+Este módulo habilita a troca de informações entre nós em uma rede descentralizada, garantindo consistência e confiabilidade.
+
+Os arquivos não são persistidos por padrão na memória flash, podem ser vistos em `/tmp/shared-state/data/`
+A informação compartilhada por padrão depende dos `publishers` instalados do shared-state.
+
+- shared-state-babeld_hosts - nós conectados a `babeld`
+- shared-state-bat_hosts - nós conectados a `batadv`
+- shared-state-nodes_and_links
+
+
+## Flavor Mini
+
+### Lista de pacotes
+O flavor `mini` do LibreMesh contém estes pacotes:
+
+
+
+### Configuração
+A configuração é a mesma do flavor padrão.
+
+### Pacotes excluídos
+Os pacotes removidos são:
+
+- batctl-default - Ferramenta CLI para gerenciar interfaces batman-adv com comandos de depuração; na ausência, o batctl-tiny é instalado
+- lime-app - a interface web
+- lime-docs - documentação offline
+- lime-debug - conjunto de ferramentas de depuração incluindo `tcpdump`, `mtr`, `iperf3`
+- shared-state-async - shared-state mais recente em C++
+- lime-hwd-ground-routing - para gerenciar conexões de roteamento terrestre
diff --git a/docs/pt-BR/reference/generic_config.md b/docs/pt-BR/reference/generic_config.md
new file mode 100644
index 0000000..00f1571
--- /dev/null
+++ b/docs/pt-BR/reference/generic_config.md
@@ -0,0 +1,38 @@
+---
+title: "Configs UCI genéricas"
+---
+
+# Configs UCI genéricas
+Seções adicionais do LibreMesh para:
+- `generic_uci_config` - Define configurações adicionais do OpenWrt.
+- `copy_asset` - Copia um arquivo do diretório de assets para um caminho especificado.
+- `run_assets` - Executa um arquivo do diretório de assets, esquema explicado em copy_asset.
+
+A principal vantagem dessas seções é permitir que o usuário mantenha toda a configuração do LibreMesh dentro de `lime-files` (um `lime-community` genérico e eventualmente um `lime-node` específico).
+Consulte os [valores padrão UCI do OpenWrt](https://openwrt.org/docs/guide-developer/uci-defaults) para métodos padrão de **integração de configurações personalizadas**.
+
+## generic_uci_config
+```
+config generic_uci_config 'uhttpd_https'
+ list uci_set 'uhttpd.main.redirect_https=0'
+```
+Por padrão, o uhttpd é instruído a evitar o redirecionamento forçado de http para https.
+
+## copy_asset
+Copia um arquivo do diretório de assets para um caminho especificado.
+Os diretórios de assets do nó são /etc/lime-assets/node e /etc/lime-assets/community.
+O diretório da comunidade deve conter os mesmos arquivos em todos os nós da comunidade.
+
+```
+config copy_asset collectd
+ option asset 'community/collectd.conf' # ou 'node/collectd.conf' ou 'community/mynode_collectd.conf'
+ option dst '/etc/collectd.conf'
+```
+
+## run_asset
+Executa um arquivo do diretório de assets, esquema explicado em copy_asset.
+```
+config run_asset dropbear
+ option asset 'community/dropbear.sh'
+ option when 'ATFIRSTBOOT' # ATFIRSTBOOT, ATCONFIG
+```
diff --git a/docs/pt-BR/reference/hardware_detection/ground_routing.md b/docs/pt-BR/reference/hardware_detection/ground_routing.md
new file mode 100644
index 0000000..08bbfcc
--- /dev/null
+++ b/docs/pt-BR/reference/hardware_detection/ground_routing.md
@@ -0,0 +1,27 @@
+---
+title: "Roteamento terrestre"
+---
+# Roteamento terrestre
+
+Uma seção para cada link de roteamento terrestre.
+
+Com roteamento terrestre nos referimos a configurações que têm o LibreMesh em um roteador que está conectado via cabo(s), eventualmente através de um switch,
+a alguns roteadores wireless executando o firmware original em modo WDS (ponte transparente) Ap/Sta.
+
+Provavelmente você desejará configurar tantas seções de roteamento terrestre com números de VLAN ou portas de switch diferentes quantos dispositivos conectados em modo WDS.
+Para uma descrição detalhada consulte https://github.com/libremesh/lime-packages/issues/443
+
+```
+config hwd_gr link1
+ option net_dev 'eth0'
+ option vlan '5'
+ option switch_dev 'switch0'
+ option switch_cpu_port '0'
+ list switch_ports '4t'
+```
+
+- `option net_dev 'eth0'` - Dispositivo ethernet simples sobre o qual a VLAN 802.1q será construída. Em caso de dúvida consulte https://openwrt.org/toh/start
+- `option vlan '5'` - ID da VLAN para usar para este link de roteamento terrestre, use um número pequeno porque switches baratos não suportam IDs grandes. isso também será usado como VID 802.1q em portas etiquetadas
+- `option switch_dev 'switch0'` - Estas opções relativas ao switch devem ser definidas apenas se seu dispositivo ethernet estiver conectado a um chip de switch. Se o switch existir você pode ler seu nome (como switch0) no arquivo /etc/config/network
+- `option switch_cpu_port '0'` - Consulte o mapa de portas do switch do seu dispositivo em https://openwrt.org/toh/start para saber o índice da porta CPU
+- `list switch_ports '4t'` - Lista de portas do switch nas quais você deseja que a VLAN seja passada, use o sufixo 't' para especificar que a porta está etiquetada, consulte https://openwrt.org/toh/start para correspondência com portas físicas
diff --git a/docs/pt-BR/reference/hardware_detection/watchcat.md b/docs/pt-BR/reference/hardware_detection/watchcat.md
new file mode 100644
index 0000000..d9487a2
--- /dev/null
+++ b/docs/pt-BR/reference/hardware_detection/watchcat.md
@@ -0,0 +1,35 @@
+---
+outline: deep
+---
+
+# Seções específicas do Watchcat
+
+## Referência
+- [Watchcat - utilidade de vigilância de rede](https://openwrt.org/docs/guide-user/advanced/watchcat)
+
+## Exemplos
+### ping_reboot
+Uma seção para cada regra de vigilância ping que você desejar definir.
+Reinicia o dispositivo por ping se o gateway (ou qualquer IP) estiver inalcançável
+```
+config hwd_watchcat default
+ option mode 'ping_reboot'
+ option pinghosts '4.2.2.2'
+ option pingperiod '30s'
+ option period '6h'
+ option forcedelay '1m'
+```
+
+- `pinghost '4.2.2.2'` - Resolvedor padrão de Level3
+- `pingperiod '30s'` - Enviar um ping a cada 30 segundos
+- `period '6h'` - Reiniciar se falhar continuamente por 6h
+- `forcedelay '1m'` - Esperar até 1m para uma reinicialização suave
+
+### periodic_reboot
+Reinicialização periódica do dispositivo após certo tempo de atividade
+```
+config hwd_watchcat periodic_reboot
+ option mode 'periodic_reboot'
+ option period '27h'
+ option forcedelay '1m'
+```
diff --git a/docs/pt-BR/reference/lime-config.md b/docs/pt-BR/reference/lime-config.md
new file mode 100644
index 0000000..7560c77
--- /dev/null
+++ b/docs/pt-BR/reference/lime-config.md
@@ -0,0 +1,129 @@
+---
+outline: deep
+---
+
+# lime-config
+O comando `lime-config` configura o LibreMesh sobre o OpenWrt.
+
+## lime-files
+Esses arquivos são combinados do nível baixo `lime-defaults` até o nível alto `lime-node` para produzir a configuração completa em `lime-autogen`.
+
+## Módulos
+Os módulos são configurados nesta ordem `hardware_detection`, `wireless`, `network`, `firewall`, `system`, `generic_config`.
+
+### hardware_detection
+Carrega todos os pacotes que começam com `lime-hwd-*`
+`lime-hwd-openwrt-wan` configura a porta WAN do OpenWrt como WAN. Se desativado, ou o pacote não estiver instalado, a porta WAN é configurada como LAN.
+
+### wireless
+Varre o dispositivo OpenWrt para encontrar rádios existentes.
+Produz a configuração UCI para cada rádio, carregando configurações de `lime-autogen` na ordem:
+- `config lime 'wifi'` (opções gerais wifi)
+- `config lime '5ghz'` (opções específicas da banda)
+- `config lime '2ghz'` (opções específicas da banda)
+- `config radioN` (opções específicas do rádio)
+
+### network
+
+#### varredura
+Varre o dispositivo OpenWrt para encontrar dispositivos ethernet existentes.
+
+#### protocolos gerais
+Configura todos os `protocolos gerais` de `lime-autogen.network.protocols`
+
+#### protocolos específicos de interface
+Para cada dispositivo ethernet, se estiver presente uma seção `config net` específica, a usa; caso contrário, usa a lista de protocolos dos `protocolos gerais`.
+Configura todos os protocolos no dispositivo ethernet.
+
+O arquivo `lime-defaults` fornece a configuração padrão para uma ampla lista de protocolos.
+Apenas os protocolos para os quais o pacote relativo `lime-proto-` está instalado são configurados.
+Na configuração padrão são
+- `ieee80211s` incluído no pacote `lime-system`
+- `lan` incluído no pacote `lime-system`
+- `anygw` - fornecido por `lime-proto-anygw`
+- `babeld` - fornecido por `lime-proto-babeld`
+- `batadv` - fornecido por `lime-proto-batadv`
+
+### firewall
+Fornece uma configuração padrão para: configurações gerais, zona LAN, zona WAN.
+Consulte as [zonas de firewall do OpenWrt](https://openwrt.org/docs/guide-user/firewall/firewall_configuration#zones).
+
+#### padrão
+`configuração de firewall padrão:
+`input: ACCEPT`
+`output: ACCEPT`
+`forward: ACCEPT`
+
+#### Zona LAN
+Fornece a configuração de firewall padrão para a `Zona LAN`, e atualiza a lista de interfaces lan:
+
+Exemplo de configuração autogerada em um roteador de banda dupla com 4 portas lan/1 wan ethernet.
+```
+config zone
+ option name 'lan'
+ list network 'lan'
+ list network 'lm_net_br_lan_anygw_if'
+ list network 'lm_net_wlan0_mesh_batadv_if'
+ list network 'lm_net_wlan0_mesh_babeld_if'
+ list network 'lm_net_wlan1_mesh_batadv_if'
+ list network 'lm_net_wlan1_mesh_babeld_if'
+ list network 'lm_net_lan1_babeld_if'
+ list network 'lm_net_lan1_batadv_if'
+ list network 'lm_net_lan2_batadv_if'
+ list network 'lm_net_lan2_babeld_if'
+ list network 'lm_net_wan_batadv_if'
+ list network 'lm_net_wan_babeld_if'
+ list network 'lm_net_lan3_batadv_if'
+ list network 'lm_net_lan3_babeld_if'
+ list network 'lm_net_lan4_batadv_if'
+ list network 'lm_net_lan4_babeld_if'
+ option input 'ACCEPT'
+ option output 'ACCEPT'
+ option forward 'ACCEPT'
+ option mtu_fix '1'
+```
+
+`mtu_fix: 1` - Habilita o ajuste do tamanho máximo de segmento (MSS) também para LAN. Habilitado por padrão apenas para WAN.
+`network: ` - Lista de interfaces dentro da bridge `br-lan`
+ As interfaces LAN são determinadas anteriormente durante a configuração do protocolo de rede `lan`
+
+
+#### Zona WAN
+Mantém as configurações padrão do OpenWrt.
+
+```
+config zone
+ option name 'wan'
+ list network 'wan'
+ list network 'wan6'
+ option input 'REJECT'
+ option output 'ACCEPT'
+ option forward 'REJECT'
+ option masq '1'
+ option mtu_fix '1'
+```
+
+### system
+Define `hostname` e `root_password`
+
+### generic_config
+Lê e executa as seções `generic_uci_config`, `copy_asset` e `run_asset`.
+Aplica configuração UCI personalizada ou copia/executa scripts shell.
+Consulte a página [Generic Config](generic_config) para opções detalhadas.
+
+
+## Confirmar alterações
+As alterações são confirmadas pelo comando `lime-config` e escritas em arquivos `/etc/config/`.
+::: tip
+Certifique-se de não perder a conexão com o seu dispositivo após a configuração.
+Para aplicar as alterações da forma mais segura, execute um `reboot` do dispositivo.
+:::
+
+### lime-apply
+Na maioria dos casos, pode-se pular a reinicialização executando o comando `lime-apply`, que chama o `reload_config` do OpenWrt.
+Dependendo das configurações alteradas, pode ser necessário uma reinicialização completa de alguns serviços, como `wireless`, `network` e `firewall`.
+```
+lime-config; lime-apply; wifi; \
+/etc/init.d/network restart; \
+/etc/init.d/firewall restart
+```
diff --git a/docs/pt-BR/reference/network/index.md b/docs/pt-BR/reference/network/index.md
new file mode 100644
index 0000000..a1b4cf2
--- /dev/null
+++ b/docs/pt-BR/reference/network/index.md
@@ -0,0 +1,115 @@
+---
+outline: deep
+---
+
+# Opciones de red
+La configuración de cada dispositivo de red se calcula a partir de:
+- las **opciones generales** en `config lime network`,
+- una **sección específica de interfaz** opcional relativa a ese dispositivo de red en particular.
+
+## Valores predeterminados
+Valores predeterminados según `/etc/config/lime-defaults`
+```
+config lime network
+ option primary_interface 'eth0'
+ option main_ipv4_address '10.%N1.0.0/16'
+ option anygw_dhcp_start '2'
+ option anygw_dhcp_limit '0'
+ option main_ipv6_address 'fd%N1:%N2%N3:%N4%N5::/64'
+ list protocols ieee80211s
+ list protocols lan
+ list protocols anygw
+ list protocols batadv:%N1
+ list protocols olsr:14
+ list protocols olsr6:15
+ list protocols olsr2:16
+ list protocols babeld:17
+ list protocols bmx7:18
+ list resolvers 4.2.2.2 # b.resolvers.Level3.net
+ list resolvers 141.1.1.1 # cns1.cw.net
+ list resolvers 2001:470:20::2 # ordns.he.net
+ option bmx7_mtu '1500'
+ option bmx7_publish_ownip false
+ option bmx7_over_batman false
+ option bmx7_pref_gw none
+ option bmx7_wifi_rate_max 'auto'
+ option bmx7_enable_pki false
+ option batadv_orig_interval '2000'
+ option batadv_routing_algo 'BATMAN_IV'
+ option anygw_mac "aa:aa:aa:%N1:%N2:aa"
+ option use_odhcpd false
+```
+
+## Opciones generales
+```
+config lime 'network'
+ option primary_interface 'eth0'
+ option main_ipv4_address '10.%N1.0.0/16'
+ option main_ipv6_address 'fd%N1:%N2%N3:%N4%N5::/64'
+```
+
+### primary_interface
+- Tipo: `string`
+- Predeterminado: `eth0`
+
+```
+config lime network
+ option primary_interface 'eth0'
+```
+
+La dirección mac de este dispositivo se usará en diferentes lugares.
+Una lista parcial incluye:
+- Opciones parametrizadas con `%Mn`
+- Las interfaces soft de Batman-adv usan los últimos 3 bytes de la interfaz principal bat0 que es igual a la mac de `primary_interface`
+
+### main_ipv4_address
+- Tipo: `||`
+- Predeterminado: `10.%N1.0.0/16`
+- Parámetro 1: subred (obligatorio)
+- Parámetro 2: parametrización de IP asignada automáticamente al nodo
+
+```
+config lime network
+ option main_ipv4_address '10.%N1.0.0/16'
+```
+
+Aquí tienes 4 posibilidades:
+- `static` - `10.0.2.1/16` - establece una IP estática y la subred
+- `parametrizado` - `10.%N1.%M5.%M6/16` - Parametrizable con %Mn y %Nn y establece la subred
+- `direccion-de-red` - `10.%N1.0.0/16` - Establece toda una dirección de red (no una IP específica) para obtener la IP autocompletada en esa red con bits de la dirección MAC. esto funciona también con máscaras de red distintas de `/24` o `/16`, como `10.0.128.0/17` (pero no direcciones de red válidas, por ejemplo `192.0.128.0/16` o `192.0.129.0/17` no serán parametrizadas).
+- `direccion-de-red` - `10.0.128.0/16/17` - Usa el segundo parámetro para la parametrización de la IP del nodo. Esto da como resultado una subred `/16` pero la IP del router LibreMesh será asignada automáticamente en un rango `/17` (de 10.0.128.1 a 10.0.255.254).
+
+### main_ipv6_address
+- Tipo: `string`
+- Predeterminado: `fd%N1:%N2%N3:%N4%N5::/64`
+- Parámetro 1: subred (obligatorio) predeterminado `/64`
+- Parámetro 2: parametrización de IP asignada automáticamente al nodo
+
+```
+config lime network
+ option main_ipv4_address '10.%N1.0.0/16'
+```
+
+Parametrizable de la misma manera que `main_ipv4_address`.
+Si se usa, el autocompletado de IP llenará como máximo los últimos 24 bits, por lo que especificar un rango de autocompletado de IP mayor que /104 no es útil.
+
+## Servidores DNS
+
+### list resolvers
+- Tipo: `list`
+- Predeterminado: `4.2.2.2 141.1.1.1 2001:470:20::2`
+
+```
+config lime network
+ list resolvers 4.2.2.2 # b.resolvers.Level3.net
+ list resolvers 141.1.1.1 # cns1.cw.net
+ list resolvers 2001:470:20::2 # ordns.he.net
+```
+
+Servidores DNS que usará el nodo. La lista está ordenada de mayor a menor prioridad.
+Establece cada entrada vacía para usar el servidor DNS del proveedor de internet
+
+```
+config lime network
+ list resolvers ''
+```
diff --git a/docs/pt-BR/reference/network/interface-specific.md b/docs/pt-BR/reference/network/interface-specific.md
new file mode 100644
index 0000000..5f5f999
--- /dev/null
+++ b/docs/pt-BR/reference/network/interface-specific.md
@@ -0,0 +1,102 @@
+---
+outline: deep
+---
+
+# Opções específicas de interface de rede
+
+## Configurar uma porta ethernet
+Crie uma seção chamada `port2` para o dispositivo de rede `lan2`
+Não coloque nenhum `.` no nome da seção.
+```
+config net port2
+ option linux_name 'eth0.2'
+ ...
+```
+
+Protocolos disponíveis: `apbb, batadv, babeld, bgp, bmx7, client, lan, manual, olsr, olsr2, olsr6, static, wan`
+
+::: tip manual
+Se você usar o protocolo `manual`, não especifique outros protocolos, pode resultar em comportamento/configuração imprevisível (provavelmente você perde a conexão com o nó)
+:::
+
+## Exemplos
+### Porta WAN
+Configure uma porta ethernet de rede como WAN usando o protocolo `wan` ou `static`.
+
+O LibreMesh no sabor padrão configura um cliente DHCPv4 na interface WAN padrão do OpenWrt.
+A seção `lm_hwd_openwrt_wan` é criada em `lime-autogen` pelo pacote `lime-hwd-openwrt-wan` caso
+um porta ethernet WAN seja detectada.
+
+::: tip
+Modifique `lm_hwd_openwrt_wan` para atribuir à interface de rede WAN um dispositivo de rede ethernet diferente
+como uma porta lan, e/ou para definir um ip estático.
+Fazer isso, em vez de desativá-la, garante que o Babeld compartilhe a rota padrão desta interface
+através do pacote `babeld-auto-gw-mode`.
+:::
+
+#### Modificar `lm_hwd_openwrt_wan`
+Configure a porta ethernet eth1.5 como WAN com endereços ipv4 e ipv6 estáticos
+```
+config net lm_hwd_openwrt_wan
+ option autogenerated 'false'
+ option linux_name 'eth1.5'
+# list protocols 'wan'
+ list protocols 'static'
+ option static_ipv4 '192.168.1.2/24'
+ option static_gateway_ipv4 '192.168.1.1'
+ option static_ipv6 '2a00:1508:0a00::1234/64'
+ option static_gateway_ipv6 'fe80::1'
+```
+
+- `autogenerated 'false'` - Isso diz ao lime-hwd-openwrt-wan para não destruir e reescrever esta seção
+- `linux_name 'eth1.5'` - Atribuir à interface de rede WAN um dispositivo de rede ethernet diferente.
+- `protocols 'wan'` - Use 'wan' ao invés de 'static' para obter conectividade com a Internet via DHCP.
+ Se uma VLAN for necessária na interface WAN para conectar ao gateway,
+ pode ser especificada com `wan:ID`, como `wan:20` ou `wan:20:8021q`
+
+
+#### wan (Cliente DHCP)
+Use o protocolo `wan` para obter conectividade com a Internet via DHCP
+```
+config net lm_hwd_openwrt_wan
+ option autogenerated 'false'
+
+config net port1_wan
+ option linux_name 'lan1'
+ list protocols 'wan'
+```
+- `autogenerated 'false'` - Especifica que a configuração da porta ethernet WAN foi editada manualmente, criando uma configuração vazia para ela e praticamente desativando-a
+
+#### static (ipv4/ipv6)
+Use protocolos `static` e especifique o 'IPv4/sub-rede' do roteador e o gateway IPv4, e/ou 'IPv6/sub-rede' e o gateway IPv6.
+```
+config net lm_hwd_openwrt_wan
+ option autogenerated 'false'
+
+config net port1_wan
+ option linux_name 'lan1'
+ list protocols 'static'
+ option static_ipv4 '192.168.1.2/24'
+ option static_gateway_ipv4 '192.168.1.1'
+ option static_ipv6 '2a00:1508:0a00::1234/64'
+ option static_gateway_ipv6 'fe80::1'
+```
+- `autogenerated 'false'` - Especifica que a configuração da porta ethernet WAN foi editada manualmente, criando uma configuração vazia para ela e praticamente desativando-a
+
+
+### Porta apenas LAN
+Configure `lan1` para usuários se conectarem, não para conexão com outros nós.
+```
+config net port1
+ option linux_name 'lan1'
+ list protocols 'lan'
+```
+
+### Porta apenas mesh
+O protocolo `batadv:%N1` deve ser especificado se o outro nó estiver na mesma nuvem mesh, ou seja, mesmo `ap_ssid`.
+```
+config net port1
+ option linux_name 'lan1'
+ list protocols 'batadv:%N1'
+ list protocols 'babeld:17'
+```
diff --git a/docs/pt-BR/reference/network/protocols-list.md b/docs/pt-BR/reference/network/protocols-list.md
new file mode 100644
index 0000000..cb69b61
--- /dev/null
+++ b/docs/pt-BR/reference/network/protocols-list.md
@@ -0,0 +1,175 @@
+---
+outline: deep
+---
+
+# Lista de protocolos de rede
+
+Os valores padrão conforme `lime-defaults`
+```
+config lime 'network'
+ list protocols anygw
+ list protocols batadv:%N1
+ list protocols babeld:17
+ list protocols bmx7:18
+ list protocols ieee80211s
+ list protocols lan
+ list protocols olsr:14
+ list protocols olsr2:16
+ list protocols olsr6:15
+```
+
+## Protocolos de rede
+Lista de protocolos configurados pelo LibreMesh, apenas `lan` e `ieee80211s` estão incluídos no pacote `lime-system`
+Os outros requerem o pacote relativo `lime-proto-`.
+
+::: tip NOTA
+Se você definir alguns protocolos em `/etc/config/lime-node`, ou `/etc/config/lime-community` você sobrescreve a *lista completa* de protocolos definida em `/etc/config/lime-defaults`
+:::
+
+Verifique a lista aplicada em `lime-autogen`
+```sh
+uci get lime-autogen.network.protocols
+```
+
+### anygw
+- Padrão: `habilitado`
+- Pacotes necessários: `lime-proto-anygw`
+```
+ list protocols anygw
+```
+
+### batadv
+- Padrão: `habilitado`
+- Pacotes necessários: `lime-proto-batadv`
+- Parâmetro 1: `vlan_number` padrão `%N1` (de 29 a 256)
+- Parâmetro 2: `vlan_type` padrão `8021ad`
+- Tipo do parâmetro 2: `8021ad|8021q`
+
+```
+ list protocols batadv:%N1
+```
+Se a vlan for `0`, as tags são desativadas e o roteamento é feito na interface sem tag.
+```
+ list protocols batadv:0
+```
+
+::: tip
+Veja a página sobre [batman-adv](protocols/batman-adv) para a configuração padrão.
+:::
+### babeld
+- Padrão: `habilitado`
+- Pacotes necessários: `lime-proto-babeld`
+- Parâmetro 1: `vlan` padrão `17`
+
+```
+ list protocols babeld:17
+```
+::: tip
+Veja a página sobre [babeld](protocols/babeld) para a configuração padrão.
+:::
+
+### bmx7
+- Padrão: `habilitado`
+- Pacotes necessários: `lime-proto-bmx7`
+- Parâmetro 1: `vlan` padrão `18`
+
+```
+ list protocols bmx7:18
+```
+
+### ieee80211s
+- Padrão: `habilitado`
+```
+ list protocols ieee80211s
+```
+
+### lan
+- Padrão: `habilitado`
+```
+ list protocols lan
+```
+
+### olsr
+- Padrão: `habilitado`
+- Pacotes necessários: `lime-proto-olsr`
+- Parâmetro 1: `vlan`
+
+```
+ list protocols olsr:14
+```
+Não use um ID de VLAN entre 29 e 284, pois essa faixa é reservada para batadv:%N1
+
+### olsr2
+- Padrão: `habilitado`
+- Pacotes necessários: `lime-proto-olsr2`
+```
+ list protocols olsr2:16
+```
+### olsr6
+- Padrão: `habilitado`
+- Pacotes necessários: `lime-proto-olsr6`
+```
+ list protocols olsr6:15
+```
+
+## Outros protocolos de rede
+
+### bgp
+- Pacotes necessários: `lime-proto-bgp`
+
+```
+config bgp_peer peer1
+ option remoteIP '192.0.2.6'
+ option remoteAS '65550'
+
+config bgp_peer peer2
+ option remoteIP '2001:db8::c001'
+ option remoteAS '65549'
+```
+
+Uma seção para cada par BGP
+
+## Protocolos específicos de interface
+Os seguintes protocolos devem ser incluídos apenas em uma seção específica de interface, ou seja, `config net lan1`. Consulte a próxima página para detalhes.
+
+::: tip NOTA
+Os seguintes protocolos devem ser incluídos em uma seção específica de interface `config net `
+:::
+
+### manual
+
+Desativa o lime-config para `lan1`
+```
+config net port1
+ linux_name 'lan1'
+ list protocols 'manual'
+```
+::: warning NOTA
+Se você usar `manual`, não deve especificar outros protocolos na mesma porta, ou sua configuração será quebrada!
+:::
+
+### static
+```
+config net port1
+ option linux_name 'lan1'
+ list protocols 'static'
+ option static_ipv4 '192.168.1.2/24'
+ option static_gateway_ipv4 '192.168.1.1'
+ option static_ipv6 '2a00:1508:0a00::1234/64'
+ option static_gateway_ipv6 'fe80::1'
+```
+
+- `static_gateway_ipv4|static_gateway_ipv6` - Pule esta linha se nenhuma rota padrão deve ser adicionada nesta interface.
+
+### wan
+- Pacotes necessários: `lime-proto-wan`
+
+```
+config net port1_wan
+ option linux_name 'lan1'
+ list protocols 'wan'
+```
+
+O [sabor padrão](/reference/flavors) inclui o pacote `lime-proto-hwd-openwrt-wan` que instala `lime-proto-wan`
+e configura a porta WAN padrão do OpenWrt como WAN.
+
diff --git a/docs/pt-BR/reference/network/protocols-options.md b/docs/pt-BR/reference/network/protocols-options.md
new file mode 100644
index 0000000..b1ab0c1
--- /dev/null
+++ b/docs/pt-BR/reference/network/protocols-options.md
@@ -0,0 +1,198 @@
+---
+outline: deep
+---
+
+# Opções de protocolos de rede
+
+Os valores padrão conforme `lime-defaults`
+```
+config lime 'network'
+ option anygw_dhcp_start '2'
+ option anygw_dhcp_limit '0'
+ option anygw_mac "aa:aa:aa:%N1:%N2:aa"
+ option batadv_orig_interval '2000'
+ option batadv_routing_algo 'BATMAN_IV'
+ option bmx7_mtu '1500'
+ option bmx7_publish_ownip false
+ option bmx7_over_batman false
+ option bmx7_pref_gw none
+ option bmx7_wifi_rate_max 'auto'
+ option bmx7_enable_pki false
+ option use_odhcpd false
+```
+
+## anygw
+
+::: tip NOTA
+O pacote `lime-proto-anygw` está incluído no [`sabor padrão`](/reference/flavors)
+:::
+
+### anygw_dhcp_start
+- Tipo: `number`
+- Padrão: `2`
+- Pacotes necessários: `lime-proto-anygw`
+
+```
+config lime network
+ option anygw_dhcp_start '2'
+```
+
+Primeiro IP na sub-rede a ser usado para DHCP para clientes.
+Por exemplo, se a sub-rede é 10.x.0.0/16 e você quer que os clientes obtenham um IPv4 de um pool DHCP começando em 10.x.100.2, o parâmetro de início deverá ser 100 * 256 + 2 = 25602.
+
+### anygw_dhcp_limit
+- Tipo: `number`
+- Padrão: `0`
+- Pacotes necessários: `lime-proto-anygw`
+
+```
+config lime network
+ option anygw_dhcp_limit '0'
+```
+
+Número de IPs disponíveis para DHCP.
+Use zero para que o pool DHCP abranja desde anygw_dhcp_start até o final da sub-rede.
+Por exemplo, se a sub-rede é 10.x.0.0/16, o início do pool DHCP está em 10.x.100.2 e você quer que termine em 10.x.127.254,
+o parâmetro limite deverá ser (127 - 100) * 256 + (254 - 2) + 1 = 7165.
+
+### anygw_mac
+- Tipo: `string`
+- Padrão: `aa:aa:aa:%N1:%N2:aa`
+- Pacotes necessários: `lime-proto-anygw`
+
+```
+config lime network
+ option anygw_mac 'aa:aa:aa:%N1:%N2:aa'
+```
+
+Parametrizável com `%Nn`. Tenha em mente que a regra `nftables` usará uma máscara de `ff:ff:ff:00:00:00`.
+
+
+## batadv
+Consulte a [página de batman-adv](protocols/batman-adv) para a configuração padrão.
+
+::: tip NOTA
+O pacote `lime-proto-batadv` está incluído no [`sabor padrão`](/reference/flavors)
+:::
+
+### batadv_orig_interval
+- Tipo: `number` `ms`
+- Padrão: `2000`
+
+```
+config lime network
+ option batadv_orig_interval '2000'
+```
+
+O BATMAN-adv enviará um pacote de mensagem Originator (OGM) a cada 2000 ms (2 segundos).
+Este valor deve ser adequado para redes estáticas, nas quais os roteadores LibreMesh não estão se deslocando.
+Se você tem um nó LibreMesh em movimento (por exemplo, em sua mochila), considere diminuir este valor.
+Um valor menor significa que o BATMAN-adv levará menos tempo para perceber quais links são melhores,
+mas gerará mais tráfico de fundo em todas as interfaces.
+
+### batadv_routing_algo
+- Tipo: `BATMAN_IV|BATMAN_V`
+- Padrão: `BATMAN_IV`
+
+```
+config lime network
+ option batadv_routing_algo 'BATMAN_IV'
+```
+
+O BATMAN_V usa throughput ao invés de perda de pacotes (como no BATMAN_IV) para avaliar a qualidade de um link.
+
+## bmx7
+
+### bmx7_mtu
+- Tipo: `number`
+- Padrão: `1500`
+
+```
+config lime network
+ option bmx7_mtu '1500'
+```
+Define o MTU para interfaces de túnel bmx7.
+
+### bmx7_publish_ownip
+- Tipo: `boolean`
+- Padrão: `false`
+
+```
+config lime network
+ option bmx7_publish_ownip false
+```
+Anuncia também uma rota /32 sobre cada nó.
+
+
+### bmx7_over_batman
+- Tipo: `boolean`
+- Padrão: `false`
+
+```
+config lime network
+ option bmx7_over_batman false
+```
+
+### bmx7_pref_gw
+- Tipo: `string|none`
+- Padrão: `none`
+
+```
+config lime network
+ option bmx7_pref_gw none
+```
+
+Força o bmx7 a usar um gateway específico para a Internet (o hostname deve ser usado como identificador).
+
+### bmx7_wifi_rate_max
+- Tipo: `number|auto`
+- Padrão: `auto`
+
+```
+config lime network
+ option bmx7_wifi_rate_max 'auto'
+```
+
+### bmx7_enable_pki
+- Tipo: `boolean`
+- Padrão: `false`
+
+```
+config lime network
+ option bmx7_enable_pki false
+```
+Confia apenas nos nós em /etc/bmx7/trustedNodes quando ativado (o padrão é confiar em todos os nós).
+
+
+## autoap - lime-ap-watchping
+
+### autoap_enabled
+Tipo: `boolean`
+Padrão: `0`
+Pacotes necessários: `lime-ap-watchping`
+
+```
+config lime network
+ option autoap_enabled 0
+```
+Se habilitado, o SSID do AP é alterado para ERROR quando há problemas de rede.
+
+### autoap_hosts
+Tipo: `string`
+Padrão: `8.8.8.8 141.1.1.1`
+Pacotes necessários: `lime-ap-watchping`
+
+```
+config lime network
+ option autoap_hosts "8.8.8.8 141.1.1.1"
+```
+Hosts usados para verificar se a rede está funcionando corretamente.
+
+## odhcpd
+
+```
+config lime network
+ option use_odhcpd false
+```
+Opção para habilitar o uso de odhcpd como servidor dhcp.
+Habilite-o para ter um servidor dhcp ao compilar o libremesh sem `lime-proto-anygw`, que por padrão usa `dnsmasq-dhcpv6`.
diff --git a/docs/pt-BR/reference/network/protocols/babeld.md b/docs/pt-BR/reference/network/protocols/babeld.md
new file mode 100644
index 0000000..2d2607e
--- /dev/null
+++ b/docs/pt-BR/reference/network/protocols/babeld.md
@@ -0,0 +1,94 @@
+---
+title: "Babeld"
+---
+# Babeld
+
+{width=200 height=200}
+
+## Referência
+- [Babel na Wikipedia](https://en.wikipedia.org/wiki/Babel_(protocol))
+- Página da wiki do OpenWrt para [Protocolo de roteamento Babel (babeld)](https://openwrt.org/docs/guide-user/services/babeld)
+- O [site da Babel](https://www.irif.fr/~jch/software/babel/)
+
+## Opções padrão
+Configuração padrão armazenada em `/etc/config/babeld`.
+
+```
+config general 'general'
+ option local_port '30003'
+ option ubus_bindings 'true'
+
+config filter 'ula6'
+ option type 'redistribute'
+ option ip 'fc00::/7'
+ option action 'allow'
+
+config filter 'public6'
+ option type 'redistribute'
+ option ip '2000::0/3'
+ option action 'allow'
+
+config filter 'default6'
+ option type 'redistribute'
+ option ip '0::0/0'
+ option le '0'
+ option action 'allow'
+ option proto '7'
+
+config filter 'mesh4'
+ option type 'redistribute'
+ option ip '10.0.0.0/8'
+ option action 'allow'
+
+config filter 'mptp4'
+ option type 'redistribute'
+ option ip '172.16.0.0/12'
+ option action 'allow'
+
+config filter 'default4'
+ option type 'redistribute'
+ option ip '0.0.0.0/0'
+ option le '0'
+ option action 'allow'
+ option proto '7'
+
+config filter 'localdeny'
+ option type 'redistribute'
+ option local 'true'
+ option action 'deny'
+
+config filter 'denyany'
+ option type 'redistribute'
+ option action 'deny'
+
+```
+
+## Exemplos
+
+---
+
+### ubus
+
+**listar comandos**
+```
+ubus -v list babeld
+'babeld' @98e57cc3
+ "add_interface":{"ifname":"String"}
+ "add_filter":{"ifname":"String","type":"Integer","metric":"Integer"}
+ "get_info":{}
+ "get_xroutes":{}
+ "get_routes":{}
+ "get_neighbours":{}
+```
+---
+
+**get_info**
+```
+ubus call babeld get_info
+{
+ "babeld_version": "babeld-1.13.1-ubus-mod",
+ "my_id": "22:05:b7:ff:fe:00:04:80",
+ "host": "openwrt"
+}
+
+```
diff --git a/docs/pt-BR/reference/network/protocols/batman-adv.md b/docs/pt-BR/reference/network/protocols/batman-adv.md
new file mode 100644
index 0000000..3e7a793
--- /dev/null
+++ b/docs/pt-BR/reference/network/protocols/batman-adv.md
@@ -0,0 +1,53 @@
+---
+title: "Batman-adv"
+---
+# Batman-adv
+
+{width=250 height=200}
+
+## Referência
+- [B.A.T.M.A.N. na Wikipedia](https://en.wikipedia.org/wiki/B.A.T.M.A.N.)
+- Página da wiki do OpenWrt para [B.A.T.M.A.N. / batman-adv](https://openwrt.org/docs/guide-user/network/wifi/mesh/batman)
+- Página da wiki Open-Mesh para [B.A.T.M.A.N. advanced](https://www.open-mesh.org/projects/batman-adv/wiki/Wiki)
+
+## Opções padrão:
+- `routing_algo`: `BATMAN_IV`
+- `bridge_loop_avoidance`: `1`
+- `multicast_mode`: `0`
+- `batadv_orig_interval`: `2000`
+- `distributed_arp_table`: `0`
+- `gw_mode`: `client` - define gw_mode=client em todos os lugares. Como não há gw_mode=server, isso faz com que bat0 nunca encaminhe solicitações, então um servidor DHCP rogue não afeta toda a rede (solicitações DHCP são sempre respondidas localmente)
+- Suporta `alfred` se instalado, substituído por `shared-state`
+
+- Define um endereço mac único para cada interface batman
+ Evita a inundação de dmesg causada por BLA com mensagens como "br-lan:
+ pacote recebido em bat0 com o próprio endereço como origem".
+ Ajusta o endereço MAC para cada uma das interfaces usadas pelo Batman-adv
+ 00 + Unicast administrado localmente .. 2 bytes do nome da interface
+.. 3 bytes da interface principal
+
+- define o `mtu` para cada interface vlan para `1532`
+
+## Exemplos
+
+### batctl
+
+---
+
+**obter interfaces ativas**
+```
+root@LiMe-ab46b8:~# batctl if
+eth0_270: active
+wlan0-mesh_270: active
+```
+
+---
+
+**obter vizinhos**
+```
+root@LiMe-ab46b8:~# batctl n
+[B.A.T.M.A.N. adv 2025.4-openwrt-2, MainIF/MAC: eth0_270/02:95:39:ab:46:b8 (bat0/76:ff:fb:da:33:92 BATMAN_IV)]
+IF Neighbor last-seen
+ wlan0-mesh_270 02:58:47:59:82:57 4.640s
+
+```
diff --git a/docs/pt-BR/reference/system.md b/docs/pt-BR/reference/system.md
new file mode 100644
index 0000000..d60cc9c
--- /dev/null
+++ b/docs/pt-BR/reference/system.md
@@ -0,0 +1,114 @@
+---
+outline: deep
+---
+
+# Opções do sistema
+Os valores padrão conforme `lime-defaults`
+```
+config lime system
+ option hostname 'LiMe-%M4%M5%M6'
+ option domain 'thisnode.info'
+ option keep_on_upgrade 'libremesh dropbear minimum-essential /etc/sysupgrade.conf'
+ option root_password_policy 'DO_NOTHING'
+ option root_password_secret ''
+ option deferrable_reboot_uptime_s '97200'
+ option deferrable_reboot_ping_target '4.2.2.2'
+ option firstbootwizard_configured false
+ option firstbootwizard_dismissed false
+```
+
+## hostname
+- Padrão: `LiMe-%M4%M5%M6`
+- Parametrizável com `%Mn`
+
+```
+config lime system
+ option hostname 'LiMe-%M4%M5%M6'
+```
+
+O nome de host do nó
+
+## domain
+- Tipo: `string`
+- Padrão: `thisnode.info`
+
+```
+config lime system
+ option domain 'thisnode.info'
+```
+
+Domínio DNS para a nuvem L2, pode ser algo como `minhanube.minharede.tld`
+
+## keep_on_upgrade
+- Tipo: `list`
+- Padrão: `libremesh dropbear minimum-essential /etc/sysupgrade.conf`
+
+```
+config lime system
+ option keep_on_upgrade 'libremesh dropbear minimum-essential /etc/sysupgrade.conf'
+```
+
+Arquivos que definem a lista de arquivos e diretórios a serem copiados durante a atualização.
+O caminho do arquivo é relativo ao `/lib/upgrade/keep.d` padrão do OpenWrt se nenhum `/` for definido.
+Esta opção é usada pelo comando `lime-sysupgrade` e pelo pacote opcional `safe-upgrade`.
+
+Consulte a página [Atualizar](/guide/upgrade) para mais detalhes.
+
+## root_password_policy
+- Tipo: `DO_NOTHING | RANDOM | SET_SECRET`
+- Padrão: `DO_NOTHING`
+
+```
+config lime system
+ option root_password_policy 'DO_NOTHING'
+```
+
+Determina a configuração do lime para a senha root:
+- `DO_NOTHING` - deixa a senha root vazia (você terá que defini-la manualmente ou através do FirstBootWizard).
+- `RANDOM` - uma senha forte aleatória será definida se root não tiver senha, use isso se seu firmware for construído com chaves ssh internas.
+- `SET_SECRET` - a senha root será configurada conforme especificado em root_password_secret.
+
+A opção padrão evita que o libremesh sobrescreva a configuração manual, por exemplo, através de `luci`, `uci` ou `lime-app`.
+
+## root_password_secret
+- Tipo: `string`
+- Padrão: `''`
+
+```
+config lime system
+ option root_password_secret ''
+```
+
+Usado apenas quando `root_password_policy` está definido como `SET_SECRET`.
+O hash da senha será armazenado em /etc/shadow.
+Use uma senha forte com pelo menos 10 números e letras, quanto mais longa melhor!.
+
+```
+openssl passwd -5
+```
+
+Você pode gerar o segredo com `openssl passwd -1` para ser compatível com a maioria dos firmwares OpenWrt.
+Para segurança aprimorada, use `openssl passwd -6` para SHA512 (ou -5 para SHA256), mas esteja ciente de que nem todos os firmwares suportam isso.
+
+## firstbootwizard_configured
+- Tipo: `string`
+- Padrão: `false`
+- Pacotes necessários: `first-boot-wizard`
+
+```
+config lime system
+ option firstbootwizard_configured false
+```
+Quando true, o assistente de primeiro boot não aparecerá por padrão.
+
+## firstbootwizard_dismissed
+- Tipo: `string`
+- Padrão: `false`
+- Pacotes necessários: `first-boot-wizard`
+
+```
+config lime system
+ option firstbootwizard_dismissed false
+```
+
+Quando true, o banner do assistente de primeiro boot será ocultado.
diff --git a/docs/pt-BR/reference/wifi/band-specific.md b/docs/pt-BR/reference/wifi/band-specific.md
new file mode 100644
index 0000000..a6d89c1
--- /dev/null
+++ b/docs/pt-BR/reference/wifi/band-specific.md
@@ -0,0 +1,75 @@
+---
+title: "Opções específicas de banda Wi-Fi"
+---
+# Opções específicas de banda Wi-Fi
+
+## Valores predeterminados
+```
+config lime-wifi-band '2ghz'
+ option channel '11'
+ option htmode 'HT20'
+ option distance '1000'
+ option adhoc_mcast_rate '24000'
+ option ieee80211s_mcast_rate '24000'
+
+config lime-wifi-band '5ghz'
+ list channel '48'
+ list channel '157'
+ option htmode 'HT40'
+ option distance '10000'
+ option adhoc_mcast_rate '6000'
+ option ieee80211s_mcast_rate '6000'
+```
+
+## 2ghz
+Configure todos os rádios em 2ghz adicionando uma seção `config lime-wifi-band '2ghz'` em `lime-node`
+Os ajustes nesta seção se aplicam a todos os rádios na banda `2ghz` (ou `5ghz`). E têm precedência sobre a seção `config lime wifi`.
+```
+config lime-wifi-band '2ghz'
+ option channel '11'
+ option htmode 'HT20'
+ option distance '1000'
+ option adhoc_mcast_rate '24000'
+ option ieee80211s_mcast_rate '24000'
+```
+
+- `htmode 'HT20'` - htmode define a largura do canal. HT40 deve ter melhor desempenho em ambientes não ruidosos.
+ Consulte a wiki do OpenWrt: https://openwrt.org/docs/guide-user/network/wifi/basic#htmodewi-fi_channel_width
+- `distance '1000'` # distância máxima de 1 km, clientes ou pares mais distantes não poderão se conectar
+
+## 5ghz
+```
+config lime-wifi-band '5ghz'
+ list channel '48'
+ list channel '157'
+ option htmode 'HT40'
+ option distance '10000'
+ option adhoc_mcast_rate '6000'
+ option ieee80211s_mcast_rate '6000'
+
+```
+
+- `channel 48` - Pode ser uma lista ou uma opção única, no caso de ser uma lista, um canal para cada rádio será selecionado de acordo com o índice do rádio
+Verifique os canais permitidos em https://en.wikipedia.org/wiki/List_of_WLAN_channels#regulatory_tables5.0ghz
+- `distance '10000'` - Distância entre este nó/ap e o nó/cliente mais distante em metros, afeta o desempenho.
+Se você não tiver certeza do número correto, é melhor usar uma distância muito grande aqui do que muito pequena.
+Clientes ou pares mais distantes não poderão se conectar
+- `htmode 'HT40'` - htmode define a largura do canal. VHT80 deve ter melhor desempenho em ambientes não ruidosos.
+Confira a lista de canais válidos neste comentário: https://github.com/libremesh/lime-packages/issues/647#issuecomment-1503968192
+e consulte a wiki do OpenWrt [htmode: Largura do canal Wi-Fi](https://openwrt.org/docs/guide-user/network/wifi/basic#htmodewi-fi_channel_width)
+
+
+## Exemplos
+### Banda dupla
+Para redes onde apenas roteadores de banda dupla são usados:
+- o rádio de 5GHz pode ser reservado para conexões entre nós.
+- os rádios de 2.4Ghz podem ser reservados para pontos de acesso.
+
+```
+config lime-wifi-band '5ghz'
+ list modes 'ieee80211s'
+
+config lime-wifi-band '2ghz'
+ list modes 'ap'
+ list modes 'apname'
+```
\ No newline at end of file
diff --git a/docs/pt-BR/reference/wifi/index.md b/docs/pt-BR/reference/wifi/index.md
new file mode 100644
index 0000000..b91d102
--- /dev/null
+++ b/docs/pt-BR/reference/wifi/index.md
@@ -0,0 +1,112 @@
+---
+title: "Opções WiFi"
+---
+# Opções WiFi
+A configuração de cada dispositivo de rádio é calculada a partir de:
+- as **opções gerais** em `config lime wifi`
+- a correspondente **seção específica de banda** para `2ghz` e `5ghz` também incluída em `lime-defaults`
+- uma **seção específica de interface** opcional relativa a esse dispositivo de rádio específico.
+
+## Valores padrão
+Os valores padrão conforme `lime-defaults`
+
+```
+config lime wifi
+ list modes 'ap'
+ list modes 'apname'
+ list modes 'ieee80211s'
+ option ap_ssid 'LibreMesh.org'
+ option apname_ssid 'LibreMesh.org/%H'
+ option adhoc_ssid 'LiMe'
+ option adhoc_bssid 'ca:fe:00:c0:ff:ee'
+ option apup_ssid 'LibreMesh.org'
+ option ieee80211s_mesh_fwding '0'
+ option ieee80211s_mesh_nolearn '1'
+ option ieee80211s_mesh_id 'LiMe'
+ option unstuck_interval '10'
+ option unstuck_timeout '300'
+
+config lime-wifi-band '2ghz'
+ option channel '11'
+ option htmode 'HT20'
+ option distance '1000'
+ option adhoc_mcast_rate '24000'
+ option ieee80211s_mcast_rate '24000'
+
+config lime-wifi-band '5ghz'
+ list channel '48'
+ list channel '157'
+ option htmode 'HT40'
+ option distance '10000'
+ option adhoc_mcast_rate '6000'
+ option ieee80211s_mcast_rate '6000'
+```
+
+## Opções gerais
+Os ajustes na seção `config lime wifi` se aplicam a **todos os rádios**.
+
+As configurações do LibreMesh nas seções `wifi` `lime-wifi-band` e específicas `radioN` contêm opções para configurar:
+- **opções do dispositivo de rádio** como `channel`, `distance`, `htmode` e `txpower`
+- **opções da interface wifi** para Pontos de Acesso, como `ap_ssid`, `ap_key`, `ap_encryption`, ou outros modos suportados como 80211s ou cliente.
+- **opções de rede**, a lista de protocolos e opções são herdadas da seção de rede padrão `config lime 'network'`
+
+### ap_ssid
+- Tipo: `string`
+- Padrão: `LibreMesh.org`
+
+```
+config lime wifi
+ option ap_ssid 'LibreMesh.org'
+```
+
+Defina aqui o nome da sua rede, **este valor é necessário mesmo se o AP não for usado**, pois é usado para calcular campos com %Nn.
+
+
+### country
+- Tipo: código do país
+- Padrão: não definido, usa `00` (Mundial) por padrão
+
+Defina isso para o código do país da sua localização, por exemplo na Espanha, definir `ES` permite usar o canal 13
+
+### modes
+- `adhoc` - Consulte a configuração adhoc abaixo
+- `ap` - Este modo configura um Ponto de Acesso, com o mesmo ssid em cada nó para roaming.
+- `apbb` - AP de backbone, para conexão de outros roteadores LibreMesh em vez de usuários
+- `apname` - Este modo configura um Ponto de Acesso, com um ssid específico para cada nó.
+- `apup` - Este modo configura o rádio para operação APuP.
+- `client` - a configuração do cliente deve ser feita em [Opções específicas Wi-Fi](./interface-specific.html#modo-cliente-wifi)
+- `ieee80211s` - Usado para links mesh entre nós.
+
+#### opções do modes
+Consulte a próxima página [Modos Wi-Fi](./modes) para detalhes sobre opções de `Access Points`, `Adhoc`, `APuP` e `802.11s`.
+
+## Solução para rádios surdos
+::: warning Advertência ath9k
+
+Roteadores com rádios Atheros e o driver ath9k têm um bug conhecido que os deixam surdos,
+se você estiver usando uma versão OpenWrt anterior a 24.10.6 certifique-se de incluir o pacote libremesh `wifi-unstuck-wa`
+:::
+
+### unstuck_interval
+- Padrão: `10`
+- Pacotes necessários: `wifi-unstuck-wa`
+
+```
+config lime 'wifi'
+ option unstuck_interval '10'
+```
+
+Intervalo em minutos que define a frequência com que o script de contornação fornecido pelo pacote `wifi-unstuck-wa`
+é executado, que reexamina todas as frequências nos rádios ativos.
+
+
+### unstuck_timeout
+- Padrão: `10`
+- Pacotes necessários: `wifi-unstuck-wa`
+
+```
+config lime 'wifi'
+ option unstuck_interval '10'
+```
+
+Tempo limite em segundos que define a duração da solução alternativa mencionada acima.
diff --git a/docs/pt-BR/reference/wifi/interface-specific.md b/docs/pt-BR/reference/wifi/interface-specific.md
new file mode 100644
index 0000000..12d429c
--- /dev/null
+++ b/docs/pt-BR/reference/wifi/interface-specific.md
@@ -0,0 +1,151 @@
+---
+outline: deep
+---
+
+# Opções específicas de interface Wi-Fi
+As seguintes opções devem ser editadas em `lime-node` ou `lime-`
+
+## Configurar um único rádio
+Certifique-se de que o nome do rádio escolhido exista, ou seja, executando o comando `wifi status`, provavelmente `radio0` ou `radio1`.
+
+```
+config wifi radio0
+ ...
+```
+Todas as **opções não especificadas** serão obtidas de `config lime-wifi-band` e das seções gerais `config lime wifi`.
+
+## Exemplos
+
+### Modo cliente Wi-Fi
+Se você quiser usar o modo cliente Wi-Fi apenas para se conectar a um AP que oferece Internet, precisa de duas partes de configuração:
+a configuração específica de wifi e a de rede.
+
+Se o seu roteador tiver uma porta ethernet WAN, você precisará também da terceira peça de configuração para desativar a interface criada por padrão pelo `lime-hwd-openwrt-wan`.
+
+Defina radio99 como cliente de um ponto de acesso para acesso à Internet
+```
+config wifi radio99
+ list modes 'client'
+ option channel 'auto'
+ option client_ssid 'SomeWiFiNetwork'
+ option client_key 'SomeWPApskPassword'
+ option client_encryption 'psk2'
+ option distance 1000
+
+config net wirelessclientWAN
+ option linux_name 'wlan0-sta'
+ list protocols 'wan'
+
+config net lm_hwd_openwrt_wan
+ option autogenerated 'false'
+```
+
+Opções para `wireless.radio99`:
+- `client_encryption 'psk2'` - psk para WPA ou psk2 para WPA2
+- `distance 1000` - Distância máxima ao AP, afeta o desempenho
+
+Opções para `network.wirelessclientWAN`:
+- `linux_name 'wlan0-sta'` - Verifique o nome, o nome da interface cliente pode ser diferente, como wlan1-sta
+- `protocols 'wan'` - Use `wan` para obter conectividade com a Internet via DHCP.
+ Use `static` para atribuir manualmente endereços ipv4/ipv6, consulte [Protocolo static](/reference/network/protocols-list#static).
+
+
+### Usar apenas para mesh
+```
+config wifi radio99
+ list modes 'ieee80211s'
+```
+
+### Alterar SSID
+```
+config wifi radio99
+ option ap_ssid 'Special'
+```
+### Alterar o canal
+```
+config wifi radio99
+ option channel '1'
+```
+
+### Desativar lime-config
+```
+config wifi radio99
+ option modes 'manual'
+```
+Se você usar o protocolo manual não deve especificar outro protocolo, ou sua configuração será quebrada.
+
+### Diminuir a potência de saída
+Isso raramente é uma boa ideia, faça isso apenas se você tiver certeza do que está fazendo.
+Esteja ciente de que diminuir a potência de saída pode criar um "problema de nó oculto", consulte https://en.wikipedia.org/wiki/Hidden_node_problem
+```
+config wifi radio99
+ option txpower '14'
+```
+Para saber o txpower atual, use o comando `iwinfo`.
+
+### Modo Adhoc
+```
+config wifi radio99
+ list modes 'adhoc'
+ option channel '1'
+ option adhoc_ssid 'LiMe'
+ option adhoc_bssid 'ca:fe:00:c0:ff:ee'
+ option adhoc_mcast_rate '24000'
+```
+
+`adhoc_ssid` - Parametrizável com %M, %H
+
+### AP de backbone Wi-Fi
+Se você quiser usar cliente Wi-Fi e AP em vez de malha para construir o
+backbone da sua rede LibreMesh (e estiver usando Batman-adv + Babeld)
+você precisará de configuração wifi e de rede tanto no cliente quanto no ponto de acesso
+
+Defina radio99 como ponto de acesso de backbone
+apbb significa backbone AP, para conexão de outros roteadores LibreMesh em vez de conexão de usuários
+parte da estrutura de rede LibreMesh usando Batman-adv e Babeld, as seguintes seções "wifi" e "net" são necessárias no AP
+```
+config wifi radio99
+ list modes 'apbb'
+ option apbb_ssid 'backbone/%H'
+# option apbb_key 'somePassword'
+# option apbb_encryption 'psk2'
+
+config net wirelessAPbackbone
+ option linux_name 'wlan0-apbb'
+ list protocols 'apbb'
+ list protocols 'babeld:17'
+ list protocols 'batadv:%N1'
+```
+
+`list modes 'ap'`, `list modes 'apname'` - Inclua isso se você também quiser um AP para clientes no mesmo rádio.
+`list modes 'ieee80211s'` - Inclua isso se você também quiser fazer malha IEEE802.11s no mesmo rádio, verifique o número máximo de "combinações de interfaces" com o comando `iw phy phy0 info`.
+`option apbb_ssid 'backbone/%H'` - Os clientes não devem se conectar a este AP, o nome do SSID deve indicar isso.
+
+`option linux_name 'wlan0-apbb'` - Verifique o nome, o nome da interface AP do backbone pode ser diferente, como wlan1-apbb.
+`list protocols 'apbb'` - Protocolo AP backbone, necessário para configurar a interface
+
+### Cliente backbone Wi-Fi
+Defina radio0 como cliente backbone de um ponto de acesso backbone
+(não para conexão de usuários, a configuração específica do AP é mostrada acima)
+usando Batman-adv e Babeld, as seguintes seções "wifi" e "net" são necessárias no cliente
+
+```
+config wifi radio99
+ list modes 'client'
+ option channel '11'
+ option client_ssid 'backbone/LiMe-ddeeff'
+# option client_key 'somePassword'
+# option client_encryption 'psk2'
+ option distance 1000
+
+config net wirelessclientbackbone
+ option linux_name 'wlan0-sta'
+ list protocols 'client'
+ list protocols 'babeld:17'
+ list protocols 'batadv:%N1'
+```
+
+`option client_ssid 'backbone/LiMe-ddeeff'` - Especifique o nome da interface AP backbone especificamente configurada à qual você deseja se conectar
+
+`option linux_name 'wlan0-sta'` - Verifique o nome, o nome da interface cliente pode ser diferente, como wlan1-sta.
+`list protocols 'client'` - Necessário para configurar a nova interface
diff --git a/docs/pt-BR/reference/wifi/modes.md b/docs/pt-BR/reference/wifi/modes.md
new file mode 100644
index 0000000..fc2a482
--- /dev/null
+++ b/docs/pt-BR/reference/wifi/modes.md
@@ -0,0 +1,87 @@
+---
+title: "Modos Wi-Fi"
+---
+# Modos Wi-Fi
+
+## Pontos de acesso
+
+### SSID
+
+#### ap_ssid
+- Tipo: `string`
+- Padrão: `LibreMesh.org`
+
+```
+config lime wifi
+ option ap_ssid 'LibreMesh.org'
+```
+
+Defina aqui o nome da sua rede, **este valor é necessário mesmo se o AP não for usado**, pois é usado para calcular campos com %Nn.
+
+#### apname_ssid
+- Tipo: `string`
+- Padrão: `LibreMesh.org/%H`
+
+```
+config lime wifi
+ option ap_ssid 'LibreMesh.org/%H'
+```
+SSID específico para cada AP. Um usuário pode se conectar ao AP com nome para evitar o roaming.
+
+#### apbb_ssid
+- Tipo: `string`
+- Padrão: não definido
+
+```
+config lime wifi
+ option apbb_ssid 'backbone/%H'
+```
+
+### chave e criptografia
+
+## Ponto de acesso Ad-Hoc
+
+```
+config lime 'wifi'
+ list modes 'adhoc'
+ option adhoc_ssid 'LiMe'
+ option adhoc_bssid 'ca:fe:00:c0:ff:ee'
+```
+
+- `adhoc_ssid 'LiMe'` - SSID dos APs (nós) ao fazer mesh no modo ad-hoc, ou seja, os nós formam um IBSS. Não é usado ao fazer mesh em 802.11s (o padrão)
+
+
+## Ponto de acesso APuP
+Consulte o artigo no blog da FreiFunk sobre [Uma nova forma de fazer mesh – APuP](https://blog.freifunk.net/2024/08/24/a-new-way-to-mesh-apup/)
+
+```
+config lime 'wifi'
+ list modes 'apup'
+ option apup_ssid 'LibreMesh.org'
+```
+
+- `apup_ssid 'LibreMesh.org'` - Defina aqui o nome da sua rede baseada em APuP
+
+## 802.11s
+```
+config lime 'wifi'
+ list modes 'ieee80211s'
+ option ieee80211s_mesh_fwding '0'
+ option ieee80211s_mesh_nolearn '1'
+ option ieee80211s_mesh_id 'LiMe'
+# option ieee80211s_key 'SomePsk2AESKey'
+# option ieee80211s_encryption 'psk2/aes'
+```
+### chave e criptografia
+Se você planeja usar mesh criptografada, deve garantir que tenha o pacote `wpad-mesh-*`, não `wpad-basic-*`, onde `*` é `mbedtls`, `openssl` ou `wolfssl`. O OpenWrt 23 usa `mbedtls` por padrão. Por exemplo, no ImageBuilder adicione
+
+```
+-wpad-basic-mbedtls wpad-mesh-mbedtls
+```
+
+### mesh_params
+Parâmetros de mesh suportados
+- `ieee80211s_mesh_id 'LiMe'` - Identificador da nuvem mesh (similar ao SSID em conceito). Usado pelos nós para se juntar e participar na rede mesh.
+- `ieee80211s_mesh_fwding '0'` - Ajustes necessários apenas para 802.11s
+- `ieee80211s_mesh_nolearn '1'` - Desabilita as capacidades de roteamento mesh multihop de 802.11s
+- `ieee80211s_mcast_rate` - é ajustado em **opções específicas de banda** com `24000` para `2ghz` e `6000` para `5ghz`
diff --git a/docs/pt-BR/resources/media_list.md b/docs/pt-BR/resources/media_list.md
new file mode 100644
index 0000000..d683db0
--- /dev/null
+++ b/docs/pt-BR/resources/media_list.md
@@ -0,0 +1,8 @@
+---
+title: "Lista de mídia"
+---
+# Lista de mídia
+
+Uma lista não exaustiva de mídias sobre o LibreMesh inclui apresentações ou discussões em áudio/vídeo e artigos técnicos.
+
+Vídeos recentes no [canal PeerTube do LibreMesh](https://media.exo.cat/@libremesh)
diff --git a/docs/pt-BR/resources/related_projects.md b/docs/pt-BR/resources/related_projects.md
new file mode 100644
index 0000000..cd9232f
--- /dev/null
+++ b/docs/pt-BR/resources/related_projects.md
@@ -0,0 +1,12 @@
+---
+title: "Projetos relacionados"
+---
+# Projetos relacionados
+
+## [Gluon](https://gluon.readthedocs.io/)
+
+[https://github.com/freifunk-gluon/gluon](https://github.com/freifunk-gluon/gluon)
+
+## [LibreRouter](https://altermundi.net/documentation/setting-up-a-librerouter-node/)
+
+[https://gitlab.com/librerouter](https://gitlab.com/librerouter)
diff --git a/docs/pt-BR/resources/tools/monitoring.md b/docs/pt-BR/resources/tools/monitoring.md
new file mode 100644
index 0000000..3a89d91
--- /dev/null
+++ b/docs/pt-BR/resources/tools/monitoring.md
@@ -0,0 +1,8 @@
+---
+title: "Monitoramento"
+---
+# Monitoramento
+
+O monitoramento de nós LibreMesh pode ser feito de várias maneiras.
+
+Alguns exemplos de comunidades que usam o LibreMesh
diff --git a/docs/pt-BR/what-is-libremesh.md b/docs/pt-BR/what-is-libremesh.md
new file mode 100644
index 0000000..0a80d4a
--- /dev/null
+++ b/docs/pt-BR/what-is-libremesh.md
@@ -0,0 +1,117 @@
+---
+outline: deep
+---
+
+# O que é o LibreMesh?
+
+## Objetivos a alcançar
+
+ - Permitir que usuários não especialistas montem uma rede mesh e façam a configuração e o gerenciamento básicos através de uma interface web usável no celular
+ - Incentivar usuários não especializados a se apropriarem da tecnologia, aprofundando seu entendimento técnico das redes mesh
+ - Escalabilidade
+ - Segmentação de rede
+ - Roaming em camada 2 dentro de certas áreas
+ - Seleção inteligente de gateway com redundância e possibilidade de escolha pelo usuário
+ - Compatibilidade com diversos cenários
+ - Uma única imagem de firmware para todos os roteadores da sua rede
+
+## O básico
+
+A arquitetura de rede projetada para o LibreMesh se baseia em duas camadas:
+
+### Camada 2 em nuvem
+::: info A camada 2 em nuvem usa o protocolo de roteamento dinâmico [BATMAN-adv](https://en.wikipedia.org/wiki/B.A.T.M.A.N.).
+
+{width=250 height=200}
+
+***
+B.A.T.M.A.N. Advanced é um protocolo de roteamento mesh que roda no espaço do kernel.
+Mesmo que a topologia da rede seja formada por múltiplos nós e múltiplos saltos, o B.A.T.M.A.N. Advanced a abstrai como um único domínio de broadcast em camada 2.
+Assim, do ponto de vista do usuário, toda a mesh se parece com uma única LAN.
+Essa arquitetura é robusta para fins de roaming, de modo que conexões TCP e UDP não se perdem ao se mover e trocar de ponto de acesso.
+***
+:::
+
+### Camada 3 de rede
+::: info Toda a camada 3 da rede usa por padrão o protocolo de roteamento [Babel](https://en.wikipedia.org/wiki/Babel_(protocol)).
+{width=200 height=200}
+
+***
+Babel é um protocolo de roteamento robusto e eficiente tanto para redes mesh sem fio quanto para redes cabeadas
+***
+:::
+
+### Misturando as camadas
+
+Por padrão, todos os nós rodam ambos os protocolos de roteamento (Babel e BATMAN-adv), mas em VLANs diferentes.footnote:[LAN virtual isolada, por exemplo wlan0.13].
+
+::: tip NOTA
+A VLAN do Babel é sempre a mesma, então todos os nós conectados no nível de enlace se enxergam.
+A VLAN do BATMAN-adv depende do identificador da nuvem, que é calculado (por padrão) a partir do hash do SSID do AP.
+
+A rede Babel será uma única rede para toda a mesh, mas a rede BATMAN-adv pode ser separada entre diferentes nuvens locais.
+:::
+
+
+
+**Essa configuração isola as nuvens de camada 2**.
+Por exemplo, um bairro, um complexo de empresas ou uma rede de hotspots ao nível de rua podem optar por isolar sua LAN do restante da rede.
+Ao mesmo tempo, conseguirão alcançar os demais nós usando a rede roteada de camada 3.
+
+O roaming estará disponível dentro da nuvem, de modo que sessões TCP, streaming de vídeo ou até mesmo uma chamada SIP podem ser mantidas enquanto você se move.
+Por outro lado, graças à segmentação de camada 3, os problemas comuns encontrados em uma rede bridgeada em camada 2 —como broadcast storms ou pesadelos de DHCP—
+não atrapalharão o funcionamento correto da rede.
+
+::: tip
+Tudo é automático e transparente para o usuário final.
+:::
+
+
+
+
+## Os detalhes
+
+Os pontos de acesso WiFi da mesma nuvem compartilham parâmetros comuns:
+
+* O SSID (o nome de identificação do AP WiFi)
+* Endereços IPv4 e IPv6 anycast especiais.footnote:[IP compartilhado por vários dispositivos na rede]
+* Um endereço MAC anycast especial
+* O servidor DHCP/RA que fornece IPs válidos da nuvem para os clientes.
+
+Assim, um cliente conectado a um AP pode se mover pela mesh sem precisar renovar sua configuração IP.
+Até a camada MAC será a mesma do ponto de vista dele.
+
+
+
+::: tip
+O arquivo de concessões DHCP é compartilhado entre a nuvem para evitar colisões usando
+[shared-state](https://github.com/libremesh/shared-state-async)
+
+Desde que todos os nós compartilhem o mesmo MAC/IP anycast, do ponto de vista do cliente é totalmente transparente.
+O gateway é sempre o mesmo, mesmo que o nó mesh (ao qual o cliente está conectado) mude.
+:::
+
+
+
+Quando um cliente quer sair da LAN (nuvem) para alcançar a Internet ou qualquer outra rede,
+ele enviará os pacotes para o endereço anycast especial do gateway. O nó ao qual o cliente
+está fisicamente conectado se encarregará disso.
+
+::: tip
+Uma regra de nftables na bridge LAN/AP evita que os pacotes enviados ao endereço anycast
+se propaguem pela nuvem.
+O nó mesh ao qual o cliente está associado recebe o pacote, mas os outros não.
+:::
+
+
+
+O pacote é roteado pela rede Babel de camada 3 até o gateway de Internet mais próximo.
+Pode ser um nó da mesma nuvem ou qualquer outro de uma nuvem distante.
+
+
+
+
+## Diagramas
+
+- Listagem de diagramas de todas as interfaces de rede criadas no LibreMesh rodando em um roteador **OpenWrt One**.
+[](/diagrams/libremesh-interfaces-openwrt-one)