This project will rework my current Documentation inside my Obsidian Vault using Obsidian links and the new feature, [bases](https://help.obsidian.md/bases). ## đź“–Documentation ### Problem summary Currently I use very basic tables inside Obsidian to document my network environment, here is an snippet of a structure of a subnet documentation: | IP | Name | type | Description | | --------------------------- | ------ | ---------- | ----------------------------------------- | | 192.168.5.1 | opn-01 | Gateway | Management Gateway on Opnsense HW router | | 192.168.5.20 | lin-01 | VM | Debian general purpose VM | | 192.168.100 - 192.168.5.200 | | dhcp-scope | DHCP Scope, DHCP server running on opn-01 | | [...] | | | | This kind of structure is not terrible but it is very static, hard to maintain and only gives insight into the section of the network itself. If I wanted to know more about the VM `lin-01`, what it does and which relations to other components inside my environment it has, I have to search in my vault for any other documentation and hope they are up to date. Maintaining documentation this way is also very tedious, if I need to update/delete any of the Entries I will have to find all mentions of this entity inside my vault and update them all by hand. A much more dynamic structure can be made using the linking feature of Obsidian. My idea is to have a Note for each entity(VM, Firewall, Server, ...), each of the Entities can have multiple child interfaces which are related to the parent Entity. One or more interfaces also can have one or more child interfaces, e.g. LAGs/VLANs. Services for the entity can also be pinned to a specific entity and additionally be pinned to a specific interface when e.g. running a web server on a nic. Using this structure allows to depict any relationship, from very basic (e.g. `NAS -> NIC1 -> SMB`) to more complex ones (e.g. `ESXi -> vmnic -> vmswitch -> Portgroup -> vmk -> vMotion`) ### Relationship Example ```mermaid flowchart LR A[VM] -->|Parent| B[NIC1] A -->|Parent| G A --> |Parent|F[NIC2] A --> |Parent|C[NIC3] B --> |Parent Interface|D[SSH] A --> |Parent|D C --> |Parent Interface|E[LAG1] F --> |Parent Interface|E E --> |Parent Interface|G[nginx] ``` I could have used the parent interface only for services aswell, but this would lead to much more complexity in the bases query and display, therefore each service also has the VM as the direct parent. This also applies to the distinction between `Parent` and `Parent_Interface`, I could have just used `Parent` for all cases but this would make the bases query more complex to actually display only the Interface as a property. ### Templater Creating, linking and maintaining this structure by hand would be very time consuming, therefore I will use the Obsidian plugin [Templater](https://silentvoid13.github.io/Templater/introduction.html). This plugin allows me to create a Template for all types of notes I want to create. In the following sections what each of the Template does is outlined, you can find the template files on my [Github](https://github.com/rsponar/ObsidianExamples/tree/main/_Templates). ### Entity - Properties - Description - net_parent - net_entity_type - Interfaces/IPs (Base) - queries all child interfaces of the `Entity` - Services (Base) - queries all child services of the `Entity` Example: ![[Pasted image 20250916205533.png|700]] ### Interface - Properties - Description - net_subnet - link to subnet where the `interface` resides in - net_ip - IP address assigned to `interface` - net_fqdn - fqdn of interface - net_parent - parent `Entity` of `interface` - net_interface_parent - parent `interface` of this `interface` Example: ![[Pasted image 20250916210811.png|800]] **Service** - Properties - Description - net_parent - parent `entity` of this `service` - net_parent_interface - parent `interface` of this `service` - net_protocol - tcp/udp/icmp - net_port - port that the service is running on - Application - Application that is hosting the service, e.g. `nginx`,`ssh` etc. Example: ![[Pasted image 20250916210951.png|1000]] ### Subnet overview - Properties - CIDR - net_subnet_type - type of the subnet, e.g. `VLAN`, `NSX`, `VPC` - net_vlanid - if of type `VLAN`, vlanId of the network - General information about the Subnets - Entities of the Subnet (Base) Example: ![[Pasted image 20250916212246.png|750]] ## đź”—Resources ### Obsidian Bases documentation - https://help.obsidian.md/bases ### Template files - https://github.com/rsponar/ObsidianExamples/tree/main/_Templates